注意
变量是从里面往外面找,块级作用域嵌套时是没有包含关系的,也就是说这个代码块不包含它体内的另一个函数内的内容,类似于“我的附庸的附庸不是我的附庸”,函数1所包含的函数2的内容也不属于函数1的代码块。
const优于let,在 let 和 const 建议优先使用const,尤其在全局环境,不应设置变量,只因设置常量。
const优于let的原因:
const可以提醒阅读程序的人这个变量不应该改变。
const比较符合函数式编程思想,运算不改变值,只是新建值,防止无意间修改变量值所导致的错误,而且这样也有利于将来分布式运算。
JavaScript编译器会对const进行优化。
多使用const,有利于提高程序的运行效率。
let和const的本质区别,其实是编译器内部的处理不同。
CSS transition属性(过渡效果)
transition
属性实现过渡效果
transition
属性是transition-property
,transition-duration
,transition-timing-function
和transition-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
- 2个属性:
- 默认值:
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;
}
}
百度前端技术学院 第五天学习笔记(CSS浮动)
补充:margin:auto;与margin: 0 auto;
意思不同。margin:auto=margin:auto auto auto auto,表示上下左右都为auto;margin:0 auto=margin:0 auto 0 auto,表示上下为0,左右为auto;
居中方式不同。margin:auto表示横竖都居中。margin: 0 auto表示横居中,竖不居中。
百度前端技术学院 第四天学习总结
背景,边框,列表,链接相关属性
背景相关属性
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;}
百度前端技术学院 第四天学习笔记(伪类选择器、组合)(3)
伪类选择器伪类选择器:是已有元素的一种状态下的样式,它不是真实存在的元素(和伪元素要区分开)
:first-child表示一组同级元素中的第一元素