主题
CSS
1. 盒模型
页面渲染时, dom
元素所采用的 布局模型 。可通过 box-sizing
进行设置。根据计算宽高的区域可分为
content-box
(W3C
标准盒模型)border-box
(IE
盒模型)padding-box
margin-box
(浏览器未实现)
2. BFC
块级格式化上下文, 是⼀个独立的渲染区域,让处于 BFC
内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。
IE
下为 Layout
, 可通过 zoom:1
触发
触发条件:
- 根元素
position: absolute/fixed
display: inline-block / table
float
元素ovevflow !== visible
规则:
- 属于同⼀个
BFC
的两个相邻Box
垂直排列 - 属于同⼀个
BFC
的两个相邻Box
的margin
会发生重叠 BFC
中子元素的margin box
的左边, 与包含块(BFC) border box
的左边相接触(子元素absolute
除外)BFC
的区域不会与float
的元素区域重叠- 计算
BFC
的高度时, 浮动子元素也参与计算 - 文字层不会被浮动层覆盖,环绕于周围
应用:
- 阻止
margin
重叠 - 可以包含浮动元素 —— 清除内部浮动(清除浮动的原理是两个
div
都位于同⼀个BFC
区域之中) - 自适应两栏布局
- 可以阻止元素被浮动元素覆盖
3.层叠上下文
元素提升为⼀个比较特殊的图层,在三维空间中 (z 轴) 高出普通元素⼀等。
触发条件
- 根层叠上下文(
html
) position
css3
属性flex
transform
opacity
filter
will-change
webkit-overflow-scrolling
层叠等级:层叠上下文在 z 轴上的排序
- 在同⼀层叠上下文中, 层叠等级才有意义
z-index
的优先级最高
4. 居中布局
水平居中
- 行内元素:
text-align: center
- 块级元素:
margin: 0 auto
absolute
+transform
flex
+justify-content: center
垂直居中
line-height: height
absolute
+transform
flex
+align-items: center
table
水平垂直居中
absolute
+transform
flex
+justify-content
+align-items
5. 选择器优先级
!important
> 行内样式 >#id
>.class
>tag
>*
> 继承 > 默认- 选择器 从右往左 解析
6. 去除浮动影响, 防止父级高度塌陷
- 通过增加尾元素清除浮动
:after
/<br>
:clear: both
- 创建父级
BFC
- 父级设置高度
7. link 与 @import 的区别
link
功能较多, 可以定义RSS
,定义Rel
等作用, 而@import
只能用于加载css
- 当解析到
link
时, 页面会同步加载所引的css
, 而@import
所引用的css
会等到页面加载完才被加载 @import
需要IE5
以上才能使用link
可以使用js
动态引入,@import
不行
8. CSS 预处理器(Sass/Less/Postcss)
CSS
预处理器的原理: 是将类 CSS
语言通过 Webpack
编译 转成浏览器可读的真正 CSS
。在这层编译之上, 便可以赋予 CSS
更多更强大的功能, 常用功能:
- 嵌套
- 变量
- 循环语句
- 条件语句
- 自动前缀
- 单位转换
mixin
复用
9. CSS 动画
transition: 过渡动画
transition-property
: 属性transition-duration
: 间隔transition-timing-function
: 曲线transition-delay
: 延迟- 常用钩子:
transitionend
animation / keyframes
animation-name
: 动画名称,对应@keyframes
animation-duration
: 间隔animation-timing-function
: 曲线animation-delay
: 延迟animation-iteration-count
: 次数infinite
: 循环动画
animation-direction
: 方向alternate
: 反向播放
animation-fill-mode
: 静止模式forwards
: 停止时,保留最后⼀帧backwards
: 停止时, 回到第⼀帧both
: 同时运用forwards
/backwards
- 常用钩子:
animationend
动画属性: 尽量使用动画属性进行动画, 能拥有较好的性能表现
translate
scale
rotate
skew
opacity
color