为什么要初始化CSS样式? link与@import的区别、什么是FOUC,文档样式短暂失效如避免、::before 和 :after中双冒号和单冒号的区别

79 阅读2分钟

为什么要初始化CSS样式?

因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的, 如果没对 CSS 初始化往往会出现浏览器之间的页面显示差异。当然,初始化样式会对 SEO 有一定的影响,力求在影响最小的情况下初始化。

link与@import的区别

  1. link 是 HTML 方式, @import 是CSS方式
  2. link 最大限度支持并行下载, @import 过多嵌套导致串行下载, 出现 FOUC (文档样式短暂失效)
  3. link 可以通过 rel="alternate stylesheet" 指定候选样式
  4. 浏览器对 link 支持早于 @import , 可以使用 @import 对老浏览器隐藏样式
  5. @import 必须在样式规则之前, 可以在css文件中引用其他文件
  6. 总体来说: link优于@import

什么是FOUC,无样式内容闪烁,文档样式短暂失效如何避免?

什么是 FOUC (无样式内容闪烁) ?

Flash Of Unstyled Content :无样式内容闪烁,这种现象称之为" 文档样式短暂失效"。

用户定义样式表加载之前浏览器使用默认样式显示文档,用户样式加载渲染之后再从新显示文档, 造成⻚面闪烁。

形成 FOUC 的原因

1. 使用import方法导入样式表。

2. 将样式表放在页面底部

3. 有几个样式表,放在html结构的不同位置。

当样式表晚于结构性 html 加载,当加载到此样式表时,页面停止了之前的渲染。此时样式表被下载和解析后,将会重新渲染页面,出现了短暂的无样式内容闪烁现象。

解决方法

1. 把样式表放到文档的 <head> 中
2. 在 .html 文件中, 将样式写在 style 标签中, 并且放置位置在 body 标签之上 。

::before 和 :after中双冒号和单冒号的区别、作用?

区别: 单冒号( : )用于 CSS3 伪类,双冒号( :: )用于 CSS3 伪元素 。

作用: 用于区分伪类和伪元素。

css的content属性作用?

css的 content 属性专门应用在 before/after 伪元素上, 用于来插入生成内容 。最常⻅的应用是利用伪类清除浮动。

/**一种常⻅利用伪类清除浮动的代码**/ 
.clearfix:after {
    content:".";
    display:block;
    height:0;
    visibility:hidden;
    clear:both;
} 
.clearfix {
    *zoom:1; 
}

持续学习总结记录中,回顾一下上面的内容: 为什么要初始化CSS样式? link与@import的区别、什么是FOUC,无样式内容闪烁,文档样式短暂失效如避免、::before 和 :after中双冒号和单冒号的区别、作用? css的content属性作用?