CSS
-
flex
和grid
区别flex
注重的是一维的排列,例如行和列,它的布局方向是沿着主轴或交叉轴排列,通常是根据内容驱动的,子元素大小可以影响整体的布局,它注重控制的是元素之间如何分配空间。grid
注重的是二维的排列,它有行和列的概念,通常我们会定义好网格的属性,再将项目放入对应的网格中,它注重控制元素在网格中的确切位置grid
通常用来处理整体布局,例如整个页面的布局。用grid
实现例如九宫格这样的数据排列比flex
更好,因为当我们需要将 3 x 3更改为其他布局时,只需要修改行和列的属性。如果用flex
实现则需要手动控制换行和子元素的宽度 -
盒子模型
- 标准盒子模型:总宽高 = 内容 content + pading + border + margin
- IE盒子模型:总宽高 = (content + padding + border) + margin
-
BFC: 块级格式化上下文
-
设置居中:
- 未知宽高:父元素flex 子元素;子元素 margin: auto
- 已知宽高:left 50 % margin 负一半
-
实现 4 x 4,每个元素都是 16:9
-
grid + aspect-ratio
-
grid + padding-top / padding-bottom
当padding设置百分比时,参照的是父元素的宽度,所以我们需要一个额外的容器来设置宽和padding,然后将我们想要的元素在该容器中绝对定位
-
-
移动端适配方案
-
rem:相对于根元素的字体大小。我们会用js动态计算根元素的
font-size
, 使其与设备视口宽度成比例优点
- 等比例缩放
- 易于计算
- 兼容性好
- 与字体大小相关
缺点
- 需要js配合,js加载之前以默认字号渲染,导致闪烁
- 字体大小
- 精确度问题
-
vw
- 无需js介入
- 避免闪烁
- 精准
- 完美适配
-
-
1px 问题
- 原因:物理像素和逻辑像素的区别,高dpr设备下会存在该问题
- 解决办法:
- 伪元素充当边框,媒体查询dpr来transform
- svg
- 图片
-
css模块化
- bem
- css module
- css-in-js

感谢您的支持 | Thank you for supporting