Comments (12)
没差
from fe-interview.
在 HTML4 的时候,不应该把 style
放到 body
中间。
浏览器在渲染页面时 DOM 和 CSSOM 是并行的,然后两者结合形成 Render Tree 显示页面。从直觉上来说,style
写在 body
前不会对 DOM 的渲染进行阻塞;而写在 body
内会对 DOM 渲染进行阻塞。会产生 FOUC(Flash of Unstyled Content) 的现象,既一瞬间的白屏或者样式的突然变化(原因是 Render Tree 重新生成了)。
不过 W3C 在 HTML5.2 的定义中对于 style
标签的使用的定义中是允许将 style
放到 body
中的。
Contexts in which this element can be used:
Where metadata content is expected.
In a noscript element that is a child of a head element.
In the body, where flow content is expected.
参考文章:
Will it be a wrong idea to have <style> in <body>?
W3C The style element
什么是 FOUC?如何避免 FOUC?
Understanding the Critical Rendering Path
from fe-interview.
渲染机制的区别,在body前是已经把样式浏览一遍,到了对应标签直接,渲染样式。显示块。
在body后,是浏览器已经把标签浏览了,但基于没有样式,显示的不完全,再把body后的样式表,扫描后,在成为真正的样式。会慢,遇到大型网站,效果更差,这都基于浏览器从上而小的浏览机制导致的。
from fe-interview.
俺Blog里写的应该很到位。
性能优化——CSS和JS的加载和执行
from fe-interview.
放在body前会跟HTML同时渲染
放在body后,浏览器会先渲染HTML,再渲染CSS,则会导致一开始出现一个没有样式的界面,再跳到有样式的界面。
from fe-interview.
写在body标签前利于浏览器逐步渲染
写在body标签后:由于浏览器以逐行方式对html文档进行解析;当解析到写在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染; 在windows的IE下可能会出现FOUC现象(即样式失效导致的页面闪烁问题);
from fe-interview.
放在body前会跟HTML同时渲染
放在body后,浏览器会先渲染HTML,再渲染CSS,则会导致一开始出现一个没有样式的界面,再跳到有样式的界面。
from fe-interview.
前
利于浏览器逐步渲染
后
由于浏览器以逐行方式对html文档进行解析;
当解析到写在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染
在windows的IE下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)
HTML4 中
不应该把 style
放到 body
中间
浏览器在渲染页面时 DOM 和 CSSOM 是并行的,然后两者结合形成 Render Tree 显示页面
从直觉上来说,style
写在 body
前不会对 DOM 的渲染进行阻塞;而写在 body
内会对 DOM 渲染进行阻塞
不过 W3C 在 HTML5.2 的定义中对于 style
标签的使用的定义中是允许将 style
放到 body
中的
from fe-interview.
写在body前有利于浏览器逐步渲染,而写在body后由于浏览器以逐行方式对html文档进行解析,当解析到写在尾部的样式表,就会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染,在windows的IE下可能会出现样式失效导致的页面闪烁问题。
from fe-interview.
渲染先后的问题,在加载东西很多,大网站会有影响
from fe-interview.
写在body前利于浏览器渲染,将会跟浏览器一起渲染下去
写在body后由于浏览器以逐行对html文档进行解析,当解析到尾部的样式表会导致浏览器停止之前的渲染,等待加载接解析样式表完成后之后重新渲染
from fe-interview.
1、 写在 body 标签前利于浏览器逐步渲染: resourcesdownloading (资源下载)->CSSOM+DOM->RenderTree(composite)->Layout->paint
2、写在 body 标签后: 由于浏览器以逐行方式对 html 文档进行解析; 当解析到写在尾部的样式表(外联或写在 style 标签)会导致浏览器停止之前的渲染,等待 加载且解析样式表完成之后重新渲染; 在 windows 的 IE 下可能会出现 FOUC 现象(即样式失效导致的页面闪烁问题);
from fe-interview.
Related Issues (20)
- [angular] 第1803天 请说说在Angular中什么是服务和依赖注入(DI)?
- [angular] 第1804天 请说说路由和导航在Angular中如何工作的?
- [angular] 第1805天 请说说在Angular中如何实现表单验证?
- [angular] 第1806天 请说说观察者模式和RxJS在Angular中的应用
- [angular] 第1807天 请说说在Angular中的双向数据绑定是如何工作的?
- [angular] 第1808天 请说说在Angular中如何实现国际化(i18n)?
- [angular] 第1809天 如何在Angular中实现懒加载?
- [angular] 第1810天 如何在Angular中实现导航的控制和保护?
- [angular] 第1811天 请说说在Angular中什么是RxJS?
- [angular] 第1812天 请说说在Angular中的ngFor是什么?有哪些用途? HOT 1
- [angular] 第1813天 请说说在Angular中的路由器是什么?
- [angular] 第1814天 请说说在Angular中的ngSwitch是什么?有哪些用途?
- [angular] 第1815天 请说说在Angular中的组件是什么?
- [angular] 第1816天 请说说在Angular中什么是指令?有哪些类型的指令?
- [angular] 第1817天 请说说在Angular中的依赖注入是什么?
- [angular] 第1818天 请说说在Angular中的NgModule是什么?
- [angular] 第1819天 请说说在Angular中的可观察对象是什么?
- [angular] 第1820天 请说说在Angular中的路由器守卫是什么?它有哪些类型?
- [angular] 第1821天 请说说在Angular中的服务是什么?如何创建一个服务?
- [angular] 第1822天 请说说在Angular中的模板语法是什么?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fe-interview.