,在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签,这时,浏览器会发送一个获取请求来重新获得这些文件,这些文件就包括CSS/JS/图片等资源,这些资源的地址都要经历一个和HTML读取类似的过程...7.repaint(重绘):改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变,只需要重新走第五步。...有两个css属性,display: none和visibility: hidden,前者会导致重排和重绘,后者会导致重绘。这是后者的优点,但缺点是此节点一直保存在内存中,占用资源。...对于动态创建的link标签不会阻塞其后动态创建的script的加载与执行,不管script标签是否具有async属性。 布局。 Render树是DOM树和CSSOM树构建完毕才开始构建的吗? 这三个过程在实际进行的时候不是完全独立,而是会有交叉。
解析CSS的顺序是浏览器的样式 -> 用户自定义的样式 -> 页面的link标签等引进来的样式 -> 写在style标签里面的内联样式 样式表不会更改 DOM 树,因此没有必要等待样式表并停止文档解析。...添加 DOM 节点后,会对该节点进行布局和重绘。一些重大变化(例如增大“html”元素的字体)会导致缓存无效,使得整个渲染树都会进行重新布局和绘制。...对于有位置重叠的元素的页面,这个过程尤其重要,因为一量图层的合并顺序出错,将会导致元素显示异常。另外,这部分主要的是这涉及到我们常说的GPU加速的问题。...事件 异步响应ui行为,开始交互 补充:script和link标签的问题 明显,CSSOM树和DOM树是互不关联的两个过程。...这就造成CSS阻塞了js,js阻塞了DOM树构建。所以我们只要设置link的preload来预加载css文件,解决了js执行时CSSOM树还没构建好的阻塞问题。
节点时会导致Reflow或Repaint移动DOM的位置,或是搞个动画的时候Resize窗口的时候,或是滚动的时候修改网页的默认字体时repaint(重绘)重绘的定义,当各种盒子的位置,大小以及其他属性...,例如改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变,浏览器于是便把这些元素都按照各自的特性绘制了一遍,于是页面的内容出现了,这个过程称为...阻塞发生的情况遇到script标签加载js的时候会加载js并且执行完毕才开始渲染遇到alert会阻塞css加载不会阻塞DOM树的解析,但css加载会阻塞DOM树(render树)的渲染同时css加载 也会阻塞后面...js语句的执行总结就是 解析遇到link、script、img标签时,浏览器会向服务器发送请求资源。...script的加载或者执行都会阻塞html解析、其他下载线程以及渲染线程。link加载完css后会解析为CSSOM(层叠样式表对象模型,一棵仅含有样式信息的树)。
CSS 来源很丰富,有浏览器自己的兜底样式(User-Agent stylesheets)、通过 link 或 @import 导入的各种外部样式、style 写的内嵌样式、以及在标签上基于 style...渲染树会将不可见标签丢弃掉,比如像 仅承载信息不表示结构的标签,或是设置了 display: none 的元素。...重绘不会改变页面的布局,只是对局部区域重新渲染,一般来说不会导致严重的性能问题。 重排(reflow) 重排,就是重新排布。...当元素的物理信息发生变化时,其后的元素就会改变位置,此时就要重新进行布局,计算元素的物理信息。 比如修改元素的高度,将元素设置为 display: none; 等操作会导致重排。...但如果在这过程中访问了布局相关信息(比如 scrollHeight、getBoundingClientRect)时,就会强制进行重渲染去获取最新布局数据; 将经常变化的元素放到新的层。
HTML 不能用于修饰样式内容,也不能在头标签中输入文本内容,使代码变得冗长和复杂,相反使用 CSS 来修饰布局元素和外观比较合适。...使用和标签替代和标签。 使用元素,输入类型,占位符及其他属性来强制验证。...将文本和元素混合,并作为另一元素的子元素,会导致布局错误, 例如: Name: 复制代码 换种写法会更好:...使用元素修饰文本,而不是布局;默认是自动提供边缘,而且其他样式也是浏览器默认提供的。 避免使用分行,可以使用block元素或CSS显示属性来代替。...避免使用来添加水平线,可使用CSS的border-bottom 来代替。 不到关键时刻不要使用div标签。 尽量少用Tables来布局。
和 @import 的区别 link 属于 XHTML 标签,而 @import 是 CSS 提供的 页面被加载时,link 会被同时加载,而 @import 引用的 CSS 会等到页面加载完再加载...import 只在 IE5 以上才能识别,而 link 是 XHTML 标签,无兼容问题 link 方式的样式权重高于 @import 的权重 使用 JS 控制 dom 去改变样式的时候,只能使用 link...标签,因为 @import 不是 dom 可以控制的 # 为什么要初始化 CSS 样式 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异...因为子元素脱离了父元素的文档流,所以父元素失去了高度,导致了塌陷。要解决这个问题,就是让父元素具有高度。...改变 transform 或 opacity 不会触发浏览器重新布局(reflow)或重绘(repaint),只会触发复合(compositions)。
HTML 不能用于修饰样式内容,也不能在头标签中输入文本内容,使代码变得冗长和复杂,相反使用CSS 来修饰布局元素和外观比较合适。...使用和标签替代和标签。 使用元素,输入类型,占位符及其他属性来强制验证。...将文本和元素混合,并作为另一元素的子元素,会导致布局错误, 例如: Name: 换种写法会更好: ...使用元素修饰文本,而不是布局;默认是自动提供边缘,而且其他样式也是浏览器默认提供的。 避免使用分行,可以使用block元素或CSS显示属性来代替。...避免使用来添加水平线,可使用CSS的border-bottom 来代替。 不到关键时刻不要使用div标签。 尽量少用Tables来布局。
重绘就是页面结构没有变化,只是外观变了,比如改了一下字体颜色、背景颜色这样的。就只会发生重绘。 “当然他说的也没错,我也不能直接说他错,就继续引导” 面试官:那重排和重绘有什么关系吗?...候选人:重排一定会导致重绘,重绘不一定会导致重排。 面试官:为什么呢? 候选人:因为重排结构发生变化了嘛,肯定会导致重绘。...还是因为其他的,通过 webpack-bundle-analyzer 分析出来的组成内容去找问题。...其中重排就是当元素的位置发生变动的时候,浏览器重新执行布局这个步骤,来重新确定页面上内容的大小和位置,确定完之后就会进行重新绘制到屏幕上,所以重排一定会导致重绘。...如果元素位置没有发生变动,仅仅只是样式发生变动,这个时候浏览器重新渲染的时候会跳过布局步骤,直接进入绘制步骤,这就是重绘,所以重绘不一定会导致重排。”
本篇文章将涵盖CSS会导致哪些性能问题,以及如何制作不妨碍人们使用的CSS的最佳实践。 目录 CSS是如何工作的?...当动画元素时,必须尽量减少布局和重绘。并非所有的CSS动画技术都是一样的,现代浏览器可以通过位置、比例、旋转和不透明度来最好地创建性能优异的动画。...一些浏览器会隐藏文本,直到字体加载完毕(导致 "不可见文本的闪烁 "或FOIT)来处理这个问题。...看起来,这样的选择器会是一个速度问题。然而,选择器匹配性能是很快的。CSS声明对压缩算法非常友好,因此优化CSS选择器所需的努力通常会更好地用在应用程序的其他部分,投资回报率更高。...CSS对于加载页面和愉快的用户体验至关重要。虽然我们通常可能会优先考虑其他资源(如脚本或图像),因为它们更具影响力,但我们不应该忘记CSS。通过上述策略,您将能够确保快速交付和执行。
因为如果非多进程的话,如果浏览器中的一个tab网页崩溃,将会导致其他被打开的网页应用。...GUI 渲染线程 GUI渲染线程负责渲染浏览器界面HTML元素,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。...重绘(repaint):改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。...3.1 CSS p { color: red; } link rel="stylesheet" href="index.css"> 这样的 link 标签(无论是否 inline...如果使用 document.createElement 创建 link 标签会怎样呢?
link是HTML提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS、rel 连接属性等。...兼容性区别 @import是CSS2.1的语法,只有在IE5+才能识别;link标签作为HTML元素,不存在兼容性问题。...加载顺序区别 加载页面时,link标签引入的CSS能被并行加载;@import引入的CSS将在页面加载完毕后才加载。...优点 减少HTTP请求,极大地提高页面加载速度 提高压缩比,减少图片体积大小,提高网页加载速度 替换方便,只需要在一张图片上修改颜色或样式即可实现 缺点 维护麻烦,不管是图标的合并,还是修改一个或多个图标时导致整个图片布局的重新布局...标准属性在后(优化) 可维护性 将css文件放在页面最上面 样式与内容分离:将css代码定义到独立css文件中 重绘和回流的描述及优化方案 这部分涉及内容较多,请移步至浏览器的回流和重绘及其优化方式
在这一过程中,浏览器得递归 CSSOM 树,然后确定具体的元素到底是什么样式。 注意:CSS匹配HTML元素是一个相当复杂和有性能问题的事情。...3.你真的了解回流和重绘吗 渲染的流程基本上是这样(如下图黄色的四个步骤):1.计算CSS样式 2.构建Render Tree 3.Layout – 定位坐标和大小 4.正式开画 ?...这里重要要说两个概念,一个是Reflow,另一个是Repaint 重绘:当我们对 DOM 的修改导致了样式的变化、却并未影响其几何属性(比如修改了颜色或背景色)时,浏览器不需重新计算元素的几何属性、直接为该元素绘制新的样式...回流:当我们对 DOM 的修改引发了 DOM 几何尺寸的变化(比如修改元素的宽、高或隐藏元素等)时,浏览器需要重新计算元素的几何属性(其他元素的几何属性和位置也会因此受到影响),然后再将计算的结果绘制出来...CSS优化:link> 标签的 rel属性 中的属性值设置为 preload 能够让你在你的HTML页面中可以指明哪些资源是在页面加载完成后即刻需要的,最优的配置加载顺序,提高渲染性能 总结 综上所述
只不过,在现代浏览器中,尤其是Chrome,已经对浏览器渲染做了极大的优化。哪怕并未遵从这条规矩,恐怕也不会引发太大的性能问题。 (注:下面提到的浏览器仅限于chrome) 1....有文章将此现象称为“浏览器预解析”:浏览器先对HTML代码做静态分析找到外链的JS和CSS文件,然后并行下载(但是执行顺序不变)。PS:IE>=8 及其他主流浏览器基本都实现了这个功能。...做重排(layout)和重绘(paint)工作; 3.小结 为了提高性能,真正需要关心的是“首次必须加载哪些CSS和JS?”,尽可能通过异步方式加载那些并不是首屏必需的外部文件。...并且,尽量不要加载那些会频繁操作DOM节点定位或样式(尤其是首屏的DOM元素)的JS文件,否则,会导致页面做多次重排和重绘工作,影响渲染速度。 那么,如何异步加载脚本或者CSS文件?...加载事件一般在window.onload事件中触发,这时,页面已经完全呈现(相应的资源文件下载完毕),只需要动态创建标签或者link>标签即可,如下(注意:动态加载文件也可以利用浏览器缓存
写在body标签后由于浏览器以逐行方式对HTML文档进行解析,当解析到写在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染,在windows的IE...下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)。...这时候就可以采取异步加载的方案,主要有如下: 使用javascript将link标签插到head标签最后 // 创建link标签 const myCSS = document.createElement...加载完成后,将media的值设为screen或all,从而让浏览器开始解析CSS link rel="stylesheet" href="mystyles.css" media="noexist" οnlοad...其他 减少重排操作,以及减少不必要的重绘 了解哪些属性可以继承而来,避免对这些属性重复编写 cssSprite,合成所有icon图片,用宽高加上backgroud-position的背景图方式显现出我们要的
(1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS; (2)页面被加载的时,link会同时被加载,而@...import引用的CSS会等到页面被加载完再加载; (3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题; (4)link方式的样式的权重高于@import... 标签定义声音,比如音乐或其他音频流。 标签定义图形,比如图表和其他图像。 标签只是图形容器,您必须使用脚本来绘制图形。...标签定义外部的内容。比如来自一个外部的新闻提供者的一篇新的文章,或者来自blog 的文本,或者是来自论坛的文本。亦或是来自其他外部源内容。 标签定义命令的列表或菜单。...DOM节点,不会导致页面全部重绘。
因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。...display:none 不显示对应的元素,在文档布局中不再分配空间(回流+重绘) visibility:hidden 隐藏对应元素,在文档布局中仍保留原来的空间(重绘) 18 position跟display...清除浮动的方式: 父级div定义height 最后一个浮动元素后加空div标签 并添加样式clear:both。 包含浮动元素的父标签添加样式overflow为hidden或auto。...写在body标签后由于浏览器以逐行方式对HTML文档进行解析,当解析到写在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染,在windows的IE...下可能会出现FOUC现象(即样式失效导致的页面闪烁问题) 44 CSS属性overflow属性定义溢出元素内容区的内容会如何处理?
HTTPS的握手有了解过吗? 同样的问题,可以拿来招聘P5也可以是P7,只是深度不同。所以我重新整理了一遍整个流程,本文较长,建议先收藏。...这三类样式都会被解析: 通过 link 引用的外部 CSS 文件 标签内的样式 元素的 style 属性内嵌的 CSS 在控制台打印document.styleSheets,这就是解析出的样式表...所以还需要另外一颗布局树确定元素的几何定位。 布局树只取渲染树中的可见元素,意味着head标签,display:none的元素不会被添加。...、布局定位、分层和绘制,回流又被叫重排; 触发回流的操作: 添加或删除可见的DOM元素 元素的位置发生变化 元素的尺寸发生变化 浏览器的窗口尺寸变化 重绘是只重新像素绘制,当元素样式的改变不影响布局时触发...回流=计算样式+布局+分层+绘制;重绘=绘制。故回流对性能的影响更大 所以应该尽量避免回流和重绘。
才加载完成,不是也会造成FOUC吗?...Block Rendering:阻塞HTML页面渲染,HTML页面会被继续下载,阻塞点后面的标签会继续被解析,img,link等会继续发送请求获取外部资源,但不会合成Rendering Tree或不会触发页面渲染.../longtime.css下载完后又渲染为其他颜色 --> #hi{color:red;} link rel="stylesheet" href="....解决方法 现在我们知道FOUC时由于页面采用临时样式来渲染页面而导致的,其中仅有chrome能好的屏蔽了这一点,而其他浏览器就呵呵了。那有什么方案可以解决呢?...总结 上述方案虽然解决了FOUC的问题,但很明显地延长了首屏白屏时间,当前较流行的App Shell(可以理解为先显示页面布局的骨架或一幅图片)也会失效,所以对于2C的应用仅仅采用上述的方案效果并不理想
HTML5 的离线存储怎么使用,解释一下工作原理 HTML5 的离线存储 9. src 与 href 的区别 区别:src 用于替代这个元素,而 href 用于建立这个标签与外部资源之间的关系 link...CSS 中 link 和@import 的区别 link 属于 XHTML 标签,@import 完全是 CSS 提供的一种方式,只能加载 CSS 加载顺序的差别,当一个页面被加载的时候,link...由于@import 是 CSS2.1 提出的所以老的浏览器不支持,而 link 标签无此问题 当使用 javascript 控制 dom 去改变样式的时候,只能使用 link 标签,因为@import...为什么要初始化 CSS 样式 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对 CSS 初始化往往会出现浏览器之间的页面显示差异 初始化样式会对 SEO 有一定的影响 10...重绘和回流 重绘和回流 14. flex 布局 flex 布局教程–阮一峰 15. css 预处理器 提供了一种 css 的书写方式,常见的就是 SAAS 文档 和 LESS 文档
领取专属 10元无门槛券
手把手带您无忧上云