本篇文章咱们来对 CSS 知识作一个总结。以前已经对 CSS 基础概念 和 CSS 布局 进行了整理,能够点击跳转查看。接下来,我主要对 CSS 定位、浏览器渲染原理以及 CSS 动画,三部分进行介绍。css
以前已经介绍了布局,那么布局和定位的区别是什么呢?浏览器
定位经过 position 属性进行建立,一共分为五个值bash
使用场景以下:布局
配合 z-index 使用post
默认每个 z-index 为 auto ,auto 计算出来的值是 0 。flex
使用场景以下:优化
脱离原来的位置,另起一层。好比对话框的关闭按钮、鼠标提示等。动画
配合 z-index 使用网站
注意:某些浏览器不写 top / left 会位置错乱ui
使用场景以下:
配合 z-index 使用
上面定位提到了层叠上下文,那么什么是层叠上下文呢?层叠上下文也叫堆叠上下文。
比喻:每个层叠上下文就是一个新的小世界(做用域),这个小世界里的 z-index 跟外界无关,处在同一个小世界的 z-index 才能比较
那么哪些不正交属性能够建立它?如下这些是比较经常使用的属性
z-index / flex / opacity / transform
复制代码
下面咱们来看下 CSS 动画。
动画是由许多精致的画面(帧)以必定的速度连续播放时,肉眼因视觉惨象产生错觉,而误觉得是活动的画面。
div.remove()
,会触发当前消失,其余元素 relayout这里推荐 CSS Triggers 这个网站,能够查看每一个属性出发哪种流程。
四个经常使用功能
注意:这些功能通常都须要配合 transition 过渡。inline 不支持 transform,须要先变成 block
translateX(<length-percentage>)
translateY(<length-percentage>)
translate(<length-percentage>, <length-percentage>?)
translateZ(<length>) 且父容器 perspactive
translate3d(X, Y, Z)
translate(-50%, -50%) 可作绝对定位元素的居中
scaleX(<number>)
scaleY(<number>)
scale(<number>, <number>?)
rotate([<angle> | <zero>])
rotateX([<angle> | <zero>])
,以 X 轴旋转rotateY([<angle> | <zero>])
,以 Y 轴旋转rotateZ([<angle> | <zero>])
,以 Z 轴旋转rotate3d([<angle> | <zero>])
skewX([<angle> | <zero>)
skewY([<angle> | <zeor>)
skew([<angle> | <zeor>], [<angle> | <zero>]?)
经过将以上属性组合使用,实现一些复杂效果
补充中间帧
注意
并非全部属性都能过渡
过渡必需要有起始
好比 hover 和 非 hover 就是两次动画
若是有中间点,能够经过下列两种方法解决
使用两次 transform
.a === transform ===> .b
.b === transform ===> .c
使用 animation
声明关键帧
添加动画
@keyframes xxx{
from{
transform: translateX(0%);
}
to{
transform: translateX(100%);
}
}
复制代码
@keyframes xxx{
0%{
transform: none;
}
66.66%{
transform: translateX(200px);
}
100%{
transform: translateX(200px) translateY(100px);
}
}
复制代码
animation: 时长 | 过渡方式 | 延迟 | 次数 | 方向 | 填充模式 | 是否暂停 | 动画名;
CSS 部分的知识整理差很少就先告一段落了,关于 CSS 部分,须要多练习代码,多看文档。