《高性能网站建设指南》阅读笔记_规则5- 将样式放在顶部
首先书中提到了可视化反馈的重要性,一个很常见的例子就是进度指示器:
在我们这里,HTML页面就相当于进度指示器,当浏览器逐步的加载页面时,页头,导航栏等,所有这些为等待页面的用户提供视觉反馈。按照作者的意思:在IE中将样式表放在底部,可能会导致白屏或者是无样式内容的闪烁。白屏是由于浏览器要等待css下载完再显示页面的组件,所以在等待css下载的时候页面就是白屏。无样式的闪烁是由于先下载页面的组件比如文字图片,并逐步显示,等css下载完则需要应用新的css样式渲染,就产生了这种无样式的闪烁现象。
Css在底部:http://stevesouders.com/hpws/css-bottom.php
Css在顶部:http://stevesouders.com/hpws/css-top.php
用@import方式:http://stevesouders.com/hpws/css-top-import.php
无样式内容的闪烁:http://stevesouders.com/hpws/css-fouc.php
但按我的测试,虽然说白屏现象只有在ie下页面加载时偶尔才会出现,但是前两个我测试不出他说的这种情况。这条规则的说服力对我来说不是很大。后两个效果还是很明显的。
需要说明的一点是,不管样式放在那里并不会影响加载页面的时间,而影响的是浏览器对这些组件顺序的反应,如下图:
有些用户感觉缓慢的页面反而加载的更快,这就是视觉化反馈的重要性。如果真的产生了白屏,用户就会因为不知道发生了什么而离开,去投奔竞争对手。
还有,根据上面第三个连接,作者提出:
1. 使用@import方法必须放在<style>标签的顶部。
2. 即使@import方法放在了<head>标签中,它所指定的样式表文件却依然是最后下载的。
所以,不推荐使用@import方法加载CSS样式表,而推荐使用<link>标签将CSS样式表放在文档的<head>中。推荐使用shtml页面,这样我们在修改样式以后就不用修改页面了。