本篇文章作为对 CSS 知识点的统筹,囊括了目前大部分在面试当中常见的内容,包括一些易踩雷的知识点。文章篇幅较长,建议收藏慢慢细品。文中篇概念性的内容也蛮多,小编一如既往的做了分割线,记忆力好的童鞋请自行忽略。
标准(W3C)盒子模型: width = 内容宽度 (content) + border + padding + margin
低版本 IE 盒子模型: width = 内容宽度 (content + border + padding)+ margin
区别: 标准盒子模型盒子的 height 和 width 是 content (内容)的宽高,而 IE 盒子模型盒子的宽高则包括 content+padding+border 部分。
注意:有关 IE6 支不支持 !important 的问题,对于单个类是支持的。例如:
.content { color: pink !importent };
.content { color: orange };
// 这里IE6及以上,FF,google等都将显示粉红色
复制代码
但是,当一个样式内部有多个相同属性的时候。例如:
.content { color: pink !importent; color: orange };
// IE7及以上,FF, google显示粉红色,而IE6将显示橙色(原因是一个样式内重复设置了属性,后面的就会覆盖掉之前的)
复制代码
常见的选择符有一下:
id 选择器( #content ),类选择器( .content ), 标签选择器( div , p , span 等), 相邻选择器( h1+p ), 子选择器( ul>li ), 后代选择器( li , a ), 通配符选择器( * ), 属性选择器( a[rel = "external"] ), 伪类选择器( a:hover , li:nth-child )
可继承的样式: font-size , font-family , color , ul , li , dl , dd , dt ;
不可继承的样式属性: border , padding , margin , width , height ;
优先级排序:
同权重情况下: 内联样式表(标签内部)> 嵌入样式表(当前文件中)> 外部样式表(外部文件中)
!important > # > . > tag
注意: !important 比 内联优先级高
css:
* {margin: 0; padding: 0;}
.content {
margin: 0 auto;
width: 100px;
height: 100px;
background: pink;
}
html:
<div class="content"></div>
css:
* {margin: 0; padding: 0;}
.content {
width: 100px;
height: 100px;
background: pink;
position: absolute;
top:50%;
left: 50%;
transform: translate(-50%, -50%); // 更新: 此处感谢小伙伴留言指出
}
html:
<div class="content"></div>
css:
* {margin: 0; padding: 0;}
.content {
width: 100px;
height: 100px;
background: pink;
position: relative;
top:50%;
left: 50%;
margin: -150px 0 0 -250px;
}
html:
<div class="content"></div>
css:
* {margin: 0; padding: 0;}
.content {
margin: 0 auto;
position: absolute;
width: 1500px;
background: pink;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
html:
<div class="content"></div>
| 值 | 作用 |
|---|---|
| none | 使用后元素将不会显示 |
| grid | 定义一个容器属性为网格布局 |
| flex | 定义一个弹性布局 |
| block | 使用后元素将变为块级元素显示,元素前后带有换行符 |
| inline | display 默认值。使用后原色变为行内元素显示,前后无换行符 |
| list-item | 使用后元素作为列表显示 |
| run-in | 使用后元素会根据上下文作为块级元素或行内元素显示 |
| table | 使用后将作为块级表格来显示(类似 <table> ),前后带有换行符 |
| inline-table | 使用后元素将作为内联表格显示(类似 <table> ),前后没有换行符 |
| table-row-group | 元素将作为一个或多个行的分组来显示(类似 <tbody> ) |
| table-hewder-group | 元素将作为一个或多个行的分组来表示(类似 <thead> ) |
| table-footer-group | 元素将作为一个或多个行分组显示(类似 <tfoot> ) |
| table-row | 元素将作为一个表格行显示(类似 <tr> ) |
| table-column-group | 元素将作为一个或多个列的分组显示(类似 <colgroup> ) |
| table-column | 元素将作为一个单元格列显示(类似 <col> ) |
| table-cell | 元素将作为一个表格单元格显示(类似 <td> 和 < th> ) |
| table-caption | 元素将作为一个表格标题显示(类似 <caption> ) |
| inherit | 规定应该从父元素集成 display 属性的值 |
其中,常用的有: block , inline-block , none , table , line 。
首先,使用 position 的时候,应该记住一个规律是‘子绝父相’。
relative (相对定位): 生成相对定位的元素,定位原点是元素本身所在的位置;
absolute (绝对定位):生成绝对定位的元素,定位原点是离自己这一级元素最近的一级 position 设置为 absolute 或者 relative 的父元素的左上角为原点的。
fixed (老 IE 不支持):生成绝对定位的元素,相对于浏览器窗口进行定位。
static :默认值。没有定位,元素出现在正常的流中(忽略 top , bottom , left , right 、 z-index 声明)。
inherit :规定从父元素继承 position 属性的值。
关于 CSS 新增的特性,有以下:
大致想到这么多,有遗漏的可以留言指出,小编看到会加上。
css:
* {margin: 0; padding: 0;}
.content {
width: 0;
height: 0;
margin: 0 auto;
border-width: 20px;
border-style: solid;
border-color: transparent transparent pink transparent; // 对应上右下左,此处为 下 粉色
}
html:
<div class="content"></div>
实现步骤: 1. 首先保证元素是块级元素;2. 设置元素的边框;3. 不需要显示的边框使用透明色。
css:
* {margin: 0; padding: 0;}
.content {
width:0;
height:0;
margin:0 auto;
border:50px solid transparent;
border-top: 50px solid pink;
}
html:
<div class="content"></div>
响应式网站设计 (Responsive Web design )是一个网站能够兼容多个终端,而不是为每一个终端做一个特定的版本。
关于原理: 基本原理是通过媒体查询 (@media) 查询检测不同的设备屏幕尺寸做处理。
关于兼容: 页面头部必须有 mate 声明的 viewport 。
<meta name="’viewport’" content="”width=device-width," initial-scale="1." maximum-scale="1,user-scalable=no”"/>
复制代码
因为浏览器的兼容问题,不同浏览器对标签的默认值是不同的,如果没有对浏览器的 CSS 初始化,会造成相同页面在不同浏览器的显示存在差异。
非 IE 浏览器下,容器不设定高度且子元素浮动时,容器高度不能被内容撑开。此时,内容会溢出到容器外面而影响布局。此类现象被称为浮动(溢出)。
原理:
浮动元素碰到包含他的边框或者浮动元素的边框停留。由于浮动元素不在文档流之中,文档流的块级框会表现的就像浮动框不存在一样。浮动元素会漂浮在文档流的块级框之上。
浮动会带来的问题:
清除方式:
预处理器,如: less , sass , stylus , 用来预编译 sass 或者 less ,增加了 css 代码的复用性,还有层级, mixin , 变量,循环, 函数等,对编写以及开发 UI 组件都极为方便。
后处理器, 如: postCss , 通常被视为在完成的样式表中根据 css 规范处理 css ,让其更加有效。目前最常做的是给 css 属性添加浏览器私有前缀,实现跨浏览器兼容性的问题。
css 预处理器为 css 增加一些编程特性,无需考虑浏览器的兼容问题,我们可以在 CSS 中使用变量,简单的逻辑程序,函数等在编程语言中的一些基本的性能,可以让我们的 css 更加的简洁,增加适应性以及可读性,可维护性等。
其它 css 预处理器语言: Sass(Scss ), Less , Stylus , Turbine , Swithch css , CSS Cacheer , DT Css 。
使用原因:
(1)、冒号 ( : ) 用于 CSS3 伪类,双冒号 ( :: ) 用于 CSS3 伪元素。
(2)、 ::before 就是以一个子元素的存在,定义在元素主体内容之前的一个伪元素。并不存在于 dom 之中,只存在在页面之中。
注意: :before 和 :after 这两个伪元素,是在 CSS2.1 里新出现的。起初,伪元素的前缀使用的是单冒号语法,但随着 Web 的进化,在 CSS3 的规范里,伪元素的语法被修改成使用双冒号,成为 ::before ::after 。
-webkit-font-smoothing 在 window 系统下没有起作用,但是在 IOS 设备上起作用 -webkit-font-smoothing:antialiased 是最佳的,灰度平滑。
多数显示器默认频率是 60Hz ,即 1 秒刷新 60 次,所以理论上最小间隔为 1/60*1000ms = 16.7ms 。
opacity 作用于元素以及元素内的所有内容(包括文字)的透明度;
rgba() 只作用于元素自身的颜色或其背景色,子元素不会继承透明效果;
content 属性专门应用在 before/after 伪元素上,用于插入额外内容或样式。
概念: Flex 是 Flexible Box 的缩写,意为” 弹性布局”,用来为盒状模型提供最大的灵活性。采用 Flex 布局的元素,称为 Flex 容器 (flex container) ,简称” 容器”。它的所有子元素自动成为容器成员,称为 Flex 项目 (flex item) ,简称” 项目”。
适用场景: 任何一个容器都可以指定为 Flex 布局。 Flexbox 用于不同尺寸屏幕中创建可自动扩展和收缩布局。
(1)、 png - 便携式网络图片 (Portable Network Graphics) , 是一种无损数据压缩位图文件格式。优点是:压缩比高,色彩好。 大多数地方都可以用。
(2)、 jpg 是一种针对相片使用的一种失真压缩方法,是一种破坏性的压缩,在色调及颜色平滑变化做的不错。在 www 上,被用来储存和传输照片的格式。
(3)、 gif 是一种位图文件格式,以 8 位色重现真色彩的图像。可以实现动画效果。
(4)、 bmp 的优点: 高质量图片;缺点: 体积太大; 适用场景: windows 桌面壁纸;
(4)、 webp 格式是谷歌在 2010 年推出的图片格式,压缩率只有 jpg 的 2/3,大小比 png 小了 45%。缺点是压缩的时间更久了,兼容性不好,目前谷歌和 opera 支持。
px 相对于显示器屏幕分辨率,无法用浏览器字体放大功能。
em 值不是固定的,会继承父级的字体大小: em = 像素值 / 父级 font-size 。
方案一: .content {height: calc(100%-100px); }
方案二: .container {position:relative;} .content { position: absolute; top: 100px; bottom: 0; }
方案三: .container {display:flex; flex-direction:column;} .content { flex:1; }
监听滚轮事件,然后滚动到一定距离时用 jquery 的 animate 实现平滑效果。
line-height 指的是一行字的高度,包含了字间距,实际上是下一行基线到上一行基线的距离。如果一个标签没有定义 height 属性,那么其最终表现的高度是由 line-height 决定的。一个容器没有设置高度,那么撑开容器的高度的是 line-height , 而不是容器内部的文字内容。把 line-height 值设置为 height 一样大小的值可以实现单行文字的垂直居中。 line-height 和 height 都能撑开一个高度, height 会触发 haslayout ,而 line-height 不会。
可将 css 拆分成两部分: 公共 CSS 和业务 CSS 。
网站的配色,字体,交互提取出为公共的 CSS 。这部分的 CSS 命名不应涉及具体的业务。对于业务 CSS ,需要有统一的命名,使用公共的前缀。
在网页中的应该使用 “偶数” 字体:
偶数字号相对更容易和 web 设计的其他部分构成比例关系,使用奇数号字体时文本段落无法对齐,宋体的中文网页排布中使用最多的就是 12 和 14 。
首先,外边距重叠就是 margin-collapse 。相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。 这种合并外边距的方式被称为折叠,结合而成的外边距称为折叠外边距。
折叠结果遵循下列计算原则:
联系: 这两个属性的值都可以让元素变得不可见;
区别:
原理: 利用不同浏览器对 CSS 的支持和解析结果不一样编写针对特定浏览器的样式。
常见的 hack 有: 属性 hack、选择器 hack、IE 条件注释。
总的来说: link 优于 @import 。
当使用 @import 导入 CSS 时,会导致某些页面在 IE 出现奇怪的现象: 没有样式的页面内容显示瞬间闪烁,这种现象被称为 “文档样式暂时失效”,简称 FOUC 。
产生原因: 当样式表晚于结构性 html 加载时,加载到此样式表时,页面将会停止之前的渲染。等待此样式表被下载和解析后,再重新渲染页面,期间导致短暂的花屏现象。
解决办法: 只要在 <head> 之间加入一个 <link> 或者 <script>``</script> 元素即可。
毗邻的两个或多个 margin 会合并成一个 margin ,叫做外边距折叠。规则如下:
li 排列受到中间空白 (回车 / 空格) 等的影响,因为空白也属于字符,会被应用样式占据空间,产生间隔。解决办法:
浏览器解析 CSS 是从上到下,从右到左解析的,这样会提高查找选择器所对应的元素的效率(至于原因,有兴趣的童鞋可以自行去了解)。
全屏滚动有点类似于轮播,整体的元素一直排列下去,假设有 5 个需要展示的全屏页面,那么高度是 500% ,只是展示 100% 。也可以理解为超出隐藏部分,滚动时显示。
可能用到的 CSS 属: overflow:hidden; transform:translate(100%, 100%); display:none;
浏览器内核主要分为两个部分: 渲染引擎和 js 引擎;
最开始渲染引擎和 js 引擎没有明确的区分,后来 js 引擎越来越独立,内核就倾向于只渲染引擎。
对于结构的要求:(规范的标签可以提高搜索引擎对页面的抓取效率,对 SEO 很有帮助)
对于 CSS 和 JS 来说:
从人手,分工和同步方面回答:
视差滚动 (Parallax Scrolling) 指网页滚动过程中,多层次的元素进行不同程度的移动,视觉上形成立体运动效果的网页展示技术(3D 效果)。
实现方式:
BFC 规定了内部的 Block Box 如何布局。一个页面是由很多个 Box 组成的,元素的类型和 display 属性,决定了这个 Box 的类型。不同类型的 box ,会参与不同的 Formatting Context (决定如何渲染文档的容器),因此 Box 内的元素会以不用的方式渲染,也是就是说 BFC 内部的元素和外部的元素不会相互影响。
定位方案:
满足下列条件之一就可以出发 BFC:
一般来说,子元素的百分比单位都是以父元素为依据。但是 margin 和 padding 例外。元素的 height 是相对于容器的高度,但是元素的 margin 和 padding 是相对于容器的宽度。
方法有挺多种,但是比较简单的方式就是: 上面的 div 宽度设置为 100%,底下两个 div 设置成 50% ,并使用 float 或者 inline 使其保持在同一行即可(具体的样式可以自己微调)。如下:
css:
.content {
width: 50%;
height: 150px;
margin: 0 auto;
}
.top {
width: 40%;
height: 50px;
background-color: pink;
margin-bottom: 50px;
margin-left: 30%;
}
.left {
width: 45%;
height: 50px;
background-color: pink;
float: left;
}
.right {
width: 45%;
height: 50px;
background-color: pink;
float: right;
}
html:
<div class="content">
<div class="top"></div>
<div class="left"></div>
<div class="right"></div>
</div>
(1)、问题: png24 位的图片在 ie 浏览器上出现背景。解决: 做成 png8 ;
(2)、问题:浏览器默认的 margin 和 padding 不同。 解决: 添加一个全局的 *{margin: 0; padding: 0;} ;
(3)、问题: IE 下, 可以使用获取常规属性的方法来获取自定义属性, 也可以使用 getAttribute() 获取自定义属性,而 Firefox 下, 只能使用 getAttribute() 获取自定义属性。 解决: 统一通过 getAttribute() 获取自定义属性;
(4)、问题: IE 下, event 对象有 x , y 属性, 但是没有 pageX , pageY 属性,而 Firefox 下, event 对象有 pageX , pageY 属性, 但是没有 x , y 属性。 解决: 使用 mX(mX = event.x ? event.x : event.pageX;) 来代替 IE 下的 event.x 或者 Firefox 下的 event.pageX 。
一般情况下,在网页中,应该使用 偶数 字体。原因:
(1)、需要在 border 外侧添加空白且空白处不需要背景(色),或上下相连的两个盒子之间的空白需要相互抵消时,可以使用 margin ;
(2)、需要在 border 内侧添加空白且空白处需要背景(色),或上下相连的两个盒子之间的空白,希望等于两者之和时,可以使用 padding 。
首先,伪类的效果可以通过添加实际的类来实现,而伪元素的效果可以通过添加实际的元素来实现。所以它们的本质区别就是是否抽象创造了新元素。
伪元素 / 伪对象: 不存在在 DOM 文档中,是虚拟的元素,是创建新元素。代表某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。
p::first-child {color: red}
复制代码
伪类:存在 DOM 文档中,逻辑上存在但在文档树中却无须标识的 “幽灵” 分类。
a:hover {color:
p:first-child {color: red}
复制代码
注意:
综上所述: ::before 是 CSS3 中写伪元素的新语法; :after 是 CSS1 中存在的、兼容 IE 的老语法。
.shrink {
-webkit-transform: scale(0.8);
-o-transform: scale(1);
display: inilne-block;
}
将多个元素设置为同一行的方法: 使用 float 或 inline-block ;
清除浮动的方式:
.clear { zoom:1; }
.clear:after {
content:" ";
clear:both;
display:block;
height:0;
overflow:hidden;
visibility:hidden;
}概念: CSS hack 是通过在 CSS 样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的, CSS hack 就是让你记住这个标准),以达到应用不同的 CSS 样式的目的。
(1)、图片间隙
在 div 中插入图片,图片会将 div 下方撑大 3px :
dt li 中的图片间隙:
(2)、默认高度, IE6 以下版本中,部分块元素,拥有默认高度(低于 18px):
表单行高不一致:
鼠标指针:
CSS3 加强了 CSS2 的功能,增加了新的属性和新的标签,并且删除了一些冗余的标签,在布局方面减少了代码量。以前比较复杂的布局,现在使用一个属性就能解决(例如 columns 等)。在展示型效果方面还加入了更多的效果(如动画,阴影,圆角等),在盒子模型和列表模块都有了改进。但是 CSS3 就兼容性而言,还是有些不足之处是,只能支持一些高版本的浏览器。
建议方案: 主张向前兼容,不考虑向后兼容。根据产品的用户群中各大浏览器,来考虑需要兼容的浏览器。
可以把浏览器分为两类: 一类是历史遗留浏览器,一类是现代浏览器。根据这个分类开发两个版本的网站,然后自己来定义哪些浏览器是历史遗留版本。
在用户使用历史遗留版本的时候,通过通告栏告知用户使用现代浏览器,获取更多的功能,拥有更好的用户体验等(升级)。当用户的浏览器不能兼容时,提示用户只是使用什么版本的浏览器才能使用网站(下载可以兼容的浏览器)。
注意:项目开始前就需要确认兼容支持的最低版本是多少,以此设计一个对应的兼容方案。
浏览器先产生一个集合,这个集合往往由最后一个部分的索引产生(如果没有索引就是所有元素的集合)。然后向上匹配,如果不符合上一个部分,就把元素从集合中删除,直到这个选择器都匹配完,还在集合中的元素就匹配这个选择器了。
Reset 重置浏览器的 CSS 默认属性,浏览器的品种不同,样式不同时,将他们重置,让他们统一。
css 精灵图,把一堆小的图片整合到一张大的图片(png)上,利用 CSS 的 “background-image” , “background- repeat”``,“background-position” 的组合进行背景定位 background-position 可以用数字能精确的定位出背景图片的位置,减轻服务器对图片的请求数量。
优点:
缺点:
拓展: 目前网站开发所用的精灵图(如字体库)一般都是直接用云端,而不是采用这种本地的了,如阿里图标库等。
绝对定位: 绝对定位脱离标准文档流,它的参考点是文档的左上角或者是右上角。如果有任何父元素有定位属性,此时就可以参考 “子绝父相” 定律来设置自己的定位参考元素。在网页制作过程中很灵活。制作覆盖效果的时候,会大量使用绝对定位。
浮动: 浮动脱离标准文档流,通常用于制作并排显示的元素,通常用于大的布局,或者无序列表比如图片的并排。可以使用 clear:both 属性让标准流中的其他元素在此之后依次排列。
当浮动的方向和 margin 是同方向的时候,此时 IE6 会在这个方向的第一个元素身上产生双倍 margin 。
解决办法:
(1)、改变 margin 的方向, float:left; margin-right:20px; 浮动向左, margin 向右; (2)、给第一个元素单独写一个类叫做 .content , 此时 .content{_margin-left: 一半的 margin;} ; (3)、用 display:inline; 不用浮动了(哈哈哈哈)。
首先对于 html , css 以及 javascript ,可以这样理解:
把网站理解成一个人, html 就是构成人体的‘骨架’, css 就是人体的‘装饰’,比如衣服,饰品等;而 javascript 就相当于人做出的‘动作’,这样就通俗易懂了。
对于内容和表现分离,小编的理解是:尽量不要再 html 中插入行内样式,尽量将 css 抽成一个独立的模块,实现 html ‘骨架’和样式的分离,利于搜索引擎的同时,也便于后期维护。
rem`` 以 html 的字号为基准,比如 2rem ,而 html 的字号时 16px ,此时 rem 就是 32px 。可以写一段 js 让 html 根元素的字号随着浏览器宽度的变化而等比例变化,此时造成页面等比例缩放的现象。
优点:
相对于 em 的好处来说,不会发生逐渐增大或者减小字体尺寸的情况,因为始终集成根元素的字体大小; rem 单位不仅仅是可应用于字体大小,还可以用于设定高度等其它大小,使页面可以适配不同屏幕尺寸。
注意: rem 一般只用于移动端。
巩固一下:
| 分类 | 优先级 |
|---|---|
| 元素选择符 | 1 |
| class 选择器 | 10 |
| id 选择器 | 100 |
| 元素标签 | 1000 |
(1)、 !important 声明的样式优先级最高,若有冲突会再进行计算;
(2)、优先级相同时,以最后出现的样式为准;
(3)、继承得到的样式的优先级是最低的。
L-V-H-A , l(link)ov(visited)e h(hover)a(active)te ,即用喜欢和讨厌两个词来概括。
原因: 为了在没有 css 的情况下,页面也能呈现出很好的内筒结构和代码架构(可以理解为为了裸奔时好看哈哈哈)。
理解:
常见的 CSS 布局有: 固定布局、流式布局、弹性布局、浮动布局、定位布局、margin 和 padding。
相同点:
不同点:
CSS 预处理器的基本思想: 为 CSS 增加了一些变量的特性(变量,判断逻辑和函数等)。
开发者使用这种语言进行 web 页面上样式设计,再编译成正常的 css 文件使用。使用 CSS 预处理器,可以使 CSS 更加简洁,适应性更强,可读性更佳,无需考虑兼容性。最常用的 CSS 预处理器语言包括: Sass(Scss) 和 Less 。
设置元素浮动后,该元素的 display 值自动变成 block 。
用来控制元素的盒子模型的解析模式,默认为 content-box 。
跟脚本动画相比,使用 CSS3 动画具有以下优势:
<link rel="stylesheet" type="text/css" media="screen(或者 print、tv 等) href="aaa.css">
注意,在打印样式表也应该注意以下几点:
一般情况下,页面加载时自上而下的。将 style 标签至于 body 之前,为的是先加载样式。
若是写在 body 标签之后,由于浏览器以逐行方式对 html 文档进行解析,当解析到写在写在文档尾部的样式表时,会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后会重新渲染,在 windows 的 IE 下可能会出现 FOUC 现象(页面闪烁)。
优化图像:
图像格式区别:
矢量图和位图的区别:
优点: 能保证在最不失真的情况下尽可能压缩图像文件的大小;
缺点: 对于需要高保真的较为复杂的图像, PNG 虽然能无损压缩,但是图片较大,不适合应用在 web 页面上;
fixed 的元素实现爱你过对于整个页面固定位置的,当在屏幕上滑动时是在滑动整个 viewport 。原来的网页还在,fixed 也没有变过位置,所以说并不是手机端不支持 fixed ,只是 fixed 元素不是相对于手机屏幕固定的,因此我们按照以下方式来设计:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
复制代码
首先是性能差异:
兼容性差异:
叠加结果:有点类似于优先机制。 position 的值-- absolute/fixed 优先级最高,有他们在时, float 不起作用, display 值需要调整。 float 或者 absolute 定位的元素,只鞥是块元素或者表格。
Critical CSS 是一种提取首屏中 CSS 的技术,以便尽快将内容呈现给用户。这是快速加载网页首屏的好方法。
核心思路:
(1)、抽取出首页的 CSS ;
(2)、用行内 css 样式,加载这部分的 css(critical CSS) ;
(3)、等到页面加载完之后,再加载整个 css ,会有一部分 css 与 critical css 重叠;
注意:每个页面至少需要引发一次重排 + 重绘,而且重排(回流)一定会引发重绘。
触发重排(回流)的条件:
注意: letter-spacing 还可以用来消除 inline-block 元素间的换行符空格间隙等问题。
到了这儿,小编希望本文能帮助到有需要的童鞋,扎实基础知识(亦或是温习遗忘的知识点),温故而知新,逐渐提升。

