css
水平居中
对于父子关系的布局,如何让子元素居中就是一个课题~
text-align + inline-block
1 | .parent { |
absolute + transform(translate)
1 | .parent { |
table + margin
1 | .parent { |
flex + justify-content
1 | .parent { |
垂直居中
table-cell + vertical-align
1 | .parent { |
absolute + transform(translate)
1 | .parent { |
flex + align-items
1 | .parent { |
水平垂直居中
flex
1 | .parent { |
absolute + transform(translate)
1 | .parent { |
BFC
分类
- 浮动元素 float,除了 none 以外的情况
- 定位元素 position(absolute、fixed)
- display(inline-block、table-caption、table-cell)
- overflow(auto、hidden、scroll)
特性
- BFC 会形成一个独立的容器,容器内的元素不受容器外元素的影响
- BFC 的高度计算会联同浮动元素的高度
- BFC 的区域不会与浮动元素的区域重叠
flex
分类
- flex-grow: 设置元素的扩展比例
- flex-shrink: 设置元素的收缩比例
- flex-basis: 设置元素的初始值
重绘和回流
区别
- 回流是由于页面 DOM 结构发生变化导致的,而重绘则是页面上存在一些样式变化就会发生重绘,不一定是 DOM 结构发生变化导致的
- 回流一定会导致重绘,而重绘不一定会导致回流
如何对重绘和回流优化?
- 对于元素的移动操作,使用 transform 来去替代 top、left、right 和 bottom 操作,因为 css3 的整个操作是对于图层的组合来实现的,不会引发重绘与回流
- 将多次样式的操作合并为一次
- 利用 documentFragment 文档碎片
- 将需要多次回流的元素,定位元素 position 设置为 absolute 或者 fixed,元素脱离了文档流,它的变化不会影响到其他元素
- 使用 nodejs 对于数据结构实行聚合或者拆分,减少前端数据分析和操作,这样也可以减少重绘与回流
CSS 三角形
示例
1 | .box { |
CSS 梯形
示例
1 | .box { |
position
属性值
- absolute: 绝对定位,是基于除了 static 以外的定位属性值的父元素定位
- relative: 相对定位,会相对于当前元素位置定位
- fixed: 绝对定位,是基于整个浏览器 web 页面定位
- static: 默认值,不定位
- inherit: 继承父元素的定位属性值
- sticky: 绝对定位,基本是基于整个浏览器 web 页面定位,是 relative 与 fixed 的混合定位