let命令与const命令

注意 变量是从里面往外面找,块级作用域嵌套时是没有包含关系的,也就是说这个代码块不包含它体内的另一个函数内的内容,类似于“我的附庸的附庸不是我的附庸”,函数1所包含的函数2的内容也不属于函数1的代码块。 const优于let,在 let 和 const 建议优先使用const,尤其在全局环境,不应设置变量,只因设置常量。 const优于let的原因: const可以提醒阅读程序的人这个变量不应该改变。 const比较符合函数式编程思想,运算不改变值,只是新建值,防止无意间修改变量值所导致的错误,而且这样也有利于将来分布式运算。 JavaScript编译器会对const进行优化。 多使用const,有利于提高程序的运行效率。 let和const的本质区别,其实是编译器内部的处理不同。

阅读全文

CSS transition属性(过渡效果)

transition 属性实现过渡效果

  • transition 属性是 transition-propertytransition-durationtransition-timing-functiontransition-delay 的一个简写属性
    • 2个属性property name | duration,比如all .2s
    • 3个属性
      • property name | duration | delay,比如all .2s 1s
      • property name | duration | timing function,比如all .2s ease-in
    • 4个属性property name | duration | timing function | delay,比如all .2s ease-in 1s
  • 默认值all 0 ease 0
  • transition 可以为一个元素在不同状态之间切换的时候定义不同的过渡效果。比如在不同的伪元素之间切换,像是 :hover:active 或者通过 JavaScript 实现的状态变化。
  • 注意:一定要设置 transition-duration 属性,否则时长为 0,就不会产生过渡效果。
  • transition属性可以被指定为一个或多个 CSS 属性的过渡效果,多个属性之间用逗号进行分隔。
    • 比如transition: margin-right 4s, color 1s
  • MDN 关于transition 属性
  • 例子:在“百度前端技术学院 第七天学习笔记(CSS position)”的“例子3”中。
  • 语法:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    /* 1个 CSS 属性的过渡效果 */
    /* property name | duration */
    transition: margin-right 4s;

    /* property name | duration | delay */
    transition: margin-right 4s 1s;

    /* property name | duration | timing function */
    transition: margin-right 4s ease-in-out;

    /* property name | duration | timing function | delay */
    transition: margin-right 4s ease-in-out 1s;

    /* 2个 CSS 属性的过渡效果 */
    transition: margin-right 4s, color 1s;

    /* 所有 CSS 属性的过渡效果 */
    transition: all 0.5s ease-out;

    /* Global values */
    transition: inherit;
    transition: initial;
    transition: unset;

transition-property属性规定设置过渡效果的 CSS 属性的名称

  • transition-property属性规定应用过渡效果的 CSS 属性的名称。(当指定的 CSS 属性改变时,过渡效果将开始)。
  • 提示:过渡效果通常在用户将鼠标指针浮动到元素上时发生。
  • MDN 关于transition-property属性
属性值 描述
none 没有属性会获得过渡效果
all 所有可被动画的属性都表现出过渡动画
IDENT 定义应用过渡效果的 CSS 属性名称列表,列表以逗号分隔。
由小写字母 a 到 z,数字 0 到 9,下划线(_)和破折号(-)组成。第一个非破折号字符不能是数字。同时,不能以两个破折号开头。。

transition-duration属性指定过渡效果时长

  • transition-duration 属性以秒或毫秒为单位指定过渡动画所需的时间。默认值为 0s ,表示不出现过渡动画不接受负值
  • 可以指定多个时长,每个时长会被应用到由 transition-property 指定的对应属性上。
  • 如果指定的时长个数小于属性个数,那么时长列表会重复。如果时长列表更长,那么该列表会被裁减。两种情况下,属性列表都保持不变。
  • 注意:这是一个实验中的功能。
    此功能某些浏览器尚在开发中,请参考MDN中浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
  • MDN 关于transition-duration属性

transition-timing-function 属性规定速度效果的速度曲线

  • 该属性允许过渡效果随着时间来改变其速度。
  • 可以规定多个timing function,通过使用 transition-property属性,可以根据主列表(transition property的列表)给每个CSS属性应用相应的timing function.
  • 如果timing function的个数比主列表中数量少,缺少的值被设置为初始值(ease 。如果timing function比主列表要多,timing function函数列表会被截断至合适的大小。这两种情况下声明的CSS属性都是有效的。
属性值 描述
linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。
ease 默认值,规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。
ease-in 规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。
ease-out 规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。
ease-in-out 规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。
  • 注意:这是一个实验中的功能。
    此功能某些浏览器尚在开发中,请参考MDN中浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
  • MDN 关于transition-timing-function 属性

transition-delay属性定义过渡效果何时开始

  • transition-delay属性规定了在过渡效果开始作用之前需要等待的时间
  • 属性值以秒(s)或毫秒(ms)为单位,表明动画过渡效果将在何时开始。取值为正时会延迟一段时间来响应过渡效果;取值为负时会导致过渡立即开始
  • 可以指定多个延迟时间,每个延迟将会分别作用于你所指定的相符合的css属性(transition-property
  • 注意:这是一个实验中的功能。
    此功能某些浏览器尚在开发中,请参考MDN中浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
  • MDN 关于transition-delay属性

使用场景

  • 在工作中,完成一个文字在鼠标移入时显示方框并提供删除图标,需要在移入=》显示方框加上一个过渡效果
  • 例子:
    1
    2
    3
    <div class="sort-cell" >
    <span>审核时间</span>
    </div>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .sort-cell {
    cursor: pointer;
    border: 2px solid transparent; // content-box,加上透明边框占位置
    &:hover { // hover显示边框,边框从无到有的过渡动画
    transition: all .15s linear;
    border-radius: 6px;
    border: 2px solid #0077FF;
    }
    }
    效果展示

let命令

了解块级作用域 块级作用域是一个语句,将多个操作封装在一起,通常是放在一个大括号里,没有返回值。(但是对象声明用到的大括号不包括块级作用域,它包括的是对象) 块级作用域之中的每个函数都类似一个代码块。(但是这个代码块不包含它体内的另一个函数内的内容,类似于“我的附庸的附庸不是我的附庸”,函数1所包含的函数2的内容也不属于函数1的代码块)

阅读全文

百度前端技术学院 第四天学习总结

背景,边框,列表,链接相关属性

背景相关属性

background简写:

属性
background-color 特别注意:rgba中的a是透明度(0.0到1.0之间,0.5为半透明)
如:rgba(255,255,255,0)完全透明的白色
background-image url(xxx.jpg)
background-size 长度:
百分比:
cover:保留宽高比,使背景图像完全覆盖背景区域
contain:把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。
background-repeat repeat-x:在水平方向上重复
repeat-y :在垂直方向上重复
no-repeat :不允许图像平铺
background-position 一对或单个关键字、百分数、长度值/混合使用(使用单个则默认另一个关键字是 center
关键字:top、bottom、left、right 和 center

边框相关属性

前三个属性可简写border属性:

属性
border-style 默认值:none,所以必须记得设置border-style,否则边框就不会出现
border-width 长度值/关键字
border-color 命名颜色/十六进制/ RGB 值
border-radius 一个或两个长度或百分比,第一个值定义水平半径,第二个值定义垂直半径

列表相关属性

可以在 <ul><ol><li>元素上简写list-style

属性
list-style-type项目符号的类型 默认disc(实心圆)
list-style-position列表标志位置 默认 outside
list-style-image图像标志 url(xxx.jpg)
默认none

链接相关属性

选择器四种状态:**(他们不是属性!)**

  • a:link - 普通的、未被访问的链接
  • a:visited - 用户已访问的链接
  • a:hover - 鼠标指针位于链接的上方
  • a:active - 链接被点击的时刻

注意:

  • a:hover 必须位于 a:link 和 a:visited 之后
  • a:active 必须位于 a:hover 之后

举例:

1
a:link {color:#FF0000;}	

属性

属性
文本修饰(下划线)text-decoration(多个属性值) 具体参考
背景色background-color 常用俱可
鼠标光标的样式cursor 属性值
文字的轮廓(框)outline 简写:宽度 (outline-width)、样式(outline-style) 、颜色
outline-width 关键字(取决于用户代理):thin/medium/thick
长度:10px/1rem
全局值:inherit
outline-style 关键字:none(默认值);auto; dotted;dashed; solid; double;groove; ridge;inset; outset;
全局值:inherit;initial; unset;

CSS 各种选择器的概念,使用方法及使用场景。

简单选择器

  • ID选择器:#ID名称{属性:值;}
  • 类选择器:.类名称{属性:值;}
  • 标签(元素)选择器:html元素名{属性:值;}
  • 通用选择器:*{属性:值;}

属性选择器

  • 属性选择器:[属性名]{CSS样式}
  • 属性和值选择器:[属性名=值]{CSS样式}
  • 属性和(多个)值选择器(类似模糊查找):
语法 含义
[属性名~=值]{CSS样式} 适用于HTML中由空格分隔的属性值
`[属性名 =值]{CSS样式}`
[属性名^=值]{CSS样式} 匹配属性值以指定值开头的每个元素
[属性名$=值]{CSS样式} 匹配属性值以指定值结尾的每个元素
[属性名*=值]{CSS样式} 匹配属性值中包含指定值的每个元素

伪类选择器

  • :first-child表示一组同级元素中的第一元素
  • :last-child表示一组同级元素中的最后一个元素
  • :only-child表示没有任何兄弟姐妹的元素
  • :invalid设置值无效时的样式

伪元素选择器

  • 注意:使用双冒号,与伪类选择器区分开。
  • ::first-line伪元素设置文本首行的特殊样式
  • ::first-letter 伪元素设置文本首字母的特殊样式
  • ::before伪元素在元素前面插入新内容

派生选择器

  • 用于选择一个标签中的所有另一个标签。(id选择器与类选择器、属性选择器也可以派生)
  • 空格分隔开两个元素名称。

后代选择器

  • 空格分隔两个选择器名称
  • 选择的元素是其选择器的后代。他们不需要是直接子元素就可以配对(子孙后代都可以)。

儿童组合器

  • 大于号分隔
  • 仅当选择器选择直接子元素时才匹配。层次结构后面的子孙不匹配。(注意:直接子元素并不是一定只有一个,要与伪类选择器:first-child区别开来)

直接相邻的同级选择器

  • 加号分隔
  • 用于选择与层次结构中相同级别的另一个元素相邻的对象
  • 注意:这两个选择器不仅要是同级别的,还要直接相邻。

一般同级[所有的同级选择器]

  • 用**~分隔**开两个选择器。
  • 用于选择与层次结构中相同级别的所有指定选择器的对象(包括直接相邻的同级),也可以使用常规的同级组合器。
  • 注意:空格分隔开的是父元素与子元素组成的后代选择器,~分隔开的是同级别的所有指定选择器的对象。

CSS 选择器的优先级

  • 影响优先级的因素从高到低的顺序是:重要性、特异性、源顺序
  • 注意:并不是整个规则都会被覆盖,只是相同的属性。

源顺序(靠后的获胜)

如果有多个选择器作用于同一个元素,则靠后的将获胜

特异性(计算各个选择器的特异性值)

  • 选择器具有的特异性程度是使用四个不同的值(或成分)来衡量的,可以将其视为千位,百位,十位和个位这四列中的四个个位数:
范围
如果声明位于style属性内(也称为内联样式)内,则在此列中得一千分。这样的声明没有选择器,因此它们的特异性始终只是1000
在此列中为整体选择器中包含的每个ID选择器打分(有几个ID选择器就几百分
在此列中为整体选择器中包含的每个类选择器,属性选择器或伪类计分(注意属性选择器的书写方法)
在此列中为整体选择器中包含的每个元素选择器或伪元素*打一分。

计算举例

重要性!important

  • 超越了上述两个级联的常规规则,但最好不要用。
  • 语法选择器{属性: 属性值 !important;}