新属性-position
- position
- static 默认值,待在文档流里
- relative 相对定位,升起来,但不脱离文档流
- absolute 绝对定位,定位基准是祖先里的非static
- fixed 固定定位,定位基准是viewport(有诈)
- sticky 粘滞定位
- 经验
- 如果你写了absolute 一般都得补一个relative
- 如果你写了absolute或fixed 一定要补top和left
- sticky 兼容性很差,主要用于面试
-
white-space:nowrap;不准自动换行
-
某些浏览器如果不写top/left 会位置错乱
-
fixed 属性不能和transform连用,会出问题,(手机端不要用这个属性,不然会有bug)
-
background 和 opacity 区别
background 只影响元素本身
opacity 影响整个元素
层叠上下文
在本篇之前的部分——运用 z-index,(我们认识到)某些元素的渲染顺序是由其 z-index 的值影响的。这是因为这些元素具有能够使他们形成一个层叠上下文的特殊属性。
文档中的层叠上下文由满足以下任意一个条件的元素形成:
-
文档根元素(
<html>); -
position值为absolute(绝对定位)或relative(相对定位)且z-index值不为auto的元素; -
position值为fixed(固定定位)或sticky(粘滞定位)的元素(沾滞定位适配所有移动设备上的浏览器,但老的桌面浏览器不支持); -
opacity属性值小于1的元素(参见 the specification for opacity); -
mix-blend-mode属性值不为normal的元素; -
以下任意属性值不为
none的元素: -
isolation属性值为isolate的元素; -
will-change值设定了任一属性而该属性在 non-initial 值时会创建层叠上下文的元素(参考这篇文章); -
contain属性值为layout、paint或包含它们其中之一的合成值(比如contain: strict、contain: content)的元素。
- 总结
需要记忆的有z-index /flex/opacity/transform 忘了可以搜索层叠上下文MDN
CSS动画
- 浏览器渲染过程
步骤
- 根据HTML构建HTML树(DOM)
- 根据CSS构建CSS树(CSSOM)
- 将两棵树合并成一棵渲染树(render tree)
- Layout 布局 (文档流 盒模型 计算大小和位置)
- Paint 绘制(把边框颜色 文字颜色 阴影等画出来)
- Compose 合成(根据层关系展示画面)
transform(变形)
- 原理 transform:transslateX(0 => 300px)
直接修改会被合成,需要等一会修改
transition 过渡属性可以自动脑补中间帧
- 注意性能
并没有repaint (重新绘制) 比改left性能好
transform
transform
- 四个常用功能
- 位移translate
- 缩放 scale
- 旋转 rotate
- 倾斜 skew
-
一般都需要配合transition 过渡
-
iline元素不支持transform 需要先变成block
-
transform 之scale
-
常用写法 scaleX()
scaleY()
scale(,?)
-
经验 用的比较少,因为容易出现模糊
transform 之rotate
- 常用写法
-
rotate([<angle>|<zero>]) -
rotateZ([<angle>|<zero>]) -
rotateX([<angle>|<zero>]) -
rotateY([<angle>|<zero>])5.rotate3d 太复杂,无法用语言表述
-
经验 一般用于360度旋转制作loading 用到时在搜索rotateMDN文档
-
transition过渡
-
作用 补充中间帧
-
语法
- transition:属性名 时长 过渡方式 延迟
- transition:left 200ms liner
- 可以用逗号分隔两个不同属性
- transition:left 200ms, top400ms
- 可以用all 代表所有属性 6.transition:all 200ms
- 过渡方式有:liner|ease|ease-in|ease-out|ease-in-out|cubic-bezier|step-start|step-end|steps,具体含义要考数学知识
- 并不是所有属性都能过渡
-
display:none=> block 没法过渡
-
一般改成visibility:hidden=> visible
animation
- 缩写语法
animation:时长|过渡方式|延迟|次数|方向|填充模式|是否暂停|动画名;
- 时长:1s 或者1000ms
- 过渡方式: 跟transition取值一样,如linear
- 次数:3或者2.4或者infinte
- 方向:reverse|alternate|alternate-reberse 5.填充模式: none| forwards|backwards|both 6.是否暂停:paused|running 以上所有属性都有对应的单独属性