这问题就是把 CSS 放在 head 内与 放在 body 内的差别而已。
在 HTML4 之前,link 是规定要放在 head 内的,
到 HTML5 才有关于放在非 head 内的标准。
当放在 head 内时,浏览器会在 render body 前就先把 CSS parse 完,
所以在加载 CSS 前会把 render 挡住。这样只需要 render 一次。
当放在 body 内时,浏览器会等 CSS parse 完后再重新 render,
也就是说,在 body 内放 N 个外连 CSS,浏览器就会 render N+1 次。
所以你可以根据状况选择,例如说对于行动产品,你可能希望 render
次数尽量少;对于其它特殊情况,你可能希望有些加载很久、又不影响
版面的 CSS 可以晚一点加载。
就我所知,不遵守这行为的浏览器有旧 Opera,它总是在加载 CSS 后重新
render(因为重绘超快?);和上篇测试的 Chrome。
另外放 body 内,DOMContentLoaded 事件会在第一次 render,还没载完
CSS 的时候就发动了,所以有些关于样式的 JavaScript 效果可能会套用
不到。
当然这也包括 Opera,所以我记得 jQuery 在做 Opera 的 ready() 时,
还会特别去检查 CSS 加载完成了没。
> 因此如果你把 CSS 放在最后,浏览器越晚读到,自然会越慢开始下载
> 而引响到 CSSOM 的建构,最后就会导致整体 Render Tree 建构的速度 delay。
严格来说这是对的,但是除非你的网站输出很慢,我不觉得 parse html 时放前、
后的时间会差到哪去。大部份的时间都是卡在︰
→ alog: 然后再怎么快都没用,大部份卡在你的file 跟 domain name 12/30 01:00
→ alog: 跟你那台server的位置决定大部份的速度 12/30 01:00
另外根据
→ mmis1000: https://test-mmis1000.c9.io/normal1.html 12/31 01:50
如果要在 Chrome 内制造延迟加载效果,还是用 JavaScript 去做比较安全。
(我今天才知道!)