当前位置: 首页 > news >正文

网站建设飠金手指排名十三网站首页加载特效

网站建设飠金手指排名十三,网站首页加载特效,seo专家是什么意思,教育网站平台建设浏览器是个极其复杂的程序#xff0c;这里只是挑几个和前端息息相关的重要内容来说 在学习如何渲染之前需要知道一个浏览器浏览器会有多个进程#xff0c;其中主要进程有浏览器进程#xff0c;网络进程#xff0c;渲染进程这里我们主要学习内容就发生在渲染进程。当渲染进程…浏览器是个极其复杂的程序这里只是挑几个和前端息息相关的重要内容来说 在学习如何渲染之前需要知道一个浏览器浏览器会有多个进程其中主要进程有浏览器进程网络进程渲染进程这里我们主要学习内容就发生在渲染进程。当渲染进程启动后会开启一个渲染主线程用来执行HTML,CSS,JS代码每打开一个新标签页都会新加一个渲染主线程来保证每个标签页互不干扰。 渲染时间点 当网络线程接收到一个HTML后会生成一个渲染任务放到消息队列排队在事件轮询的机制下渲染主线程会取出渲染任务执行至此渲染流程开始。 渲染流水线 渲染流程又分为多个阶段解析HTML计算样式布局分层绘制分块光栅化画。 每个阶段都有明确的输入和输出上一步的输出会作为下一步的输入这样环环相扣就形成了一条完整的渲染流水线。 解析HTML 渲染的第一步是解析 HTML来生成domcssom树生成树的原因是为了方便后续操作不然一直在HTML字符串取值是一个很痛苦的事情。 解析过程中遇到js执行js遇到css解析css。为了提高效率浏览器会开启一个预解析线程率先下载HTML中的外部css和js文件。 解析到link位置时css文件还没下载好主线程不会等待继续解析后面的HTML这是因为css下载是在预解析线程完成的这也是css不会阻塞HTML解析的根本原因。 解析到script位置时会停止解析HTML转而去等待js文件下载完成且全局解析执行完成后才会继续解析HTML。因为js在执行过程中会改变DOM树所以 DOM 树的生成必须暂停。这就是js会阻塞HTML解析的根本原因 样式计算 主线程会遍历得到的DOM树依次为树的每个节点计算出最终样式也叫做computed style。 在这一过程中会把预设值变为绝对值比如red转换为rgb(255,0,0)em转换为px等最后会得到一个带有样式的DOM树。 布局 主线程会依次遍历DOM树计算出每一个节点的几何信息列如宽高相对于包含块的位置等等。 之后浏览器会用layout树来保存这些几何信息layout树并不是js里的树是浏览器内部的。往往DOM树和layout树并不一一对应比如display:none;的节点就不会有任何几何信息又比如使用伪类虽然DOM树没有这些节点但是这些节点是有几何信息的还有匿名行盒块盒这些都会导致DOM树和layout树并不一一对应。 分层 主线程使用一套复杂的逻辑进行分层。 这样带来的好处就是将来某一层内容变化后只用改变当前层从而提高效率。 滚动条堆叠上下文opacity 等都可以影响分层也可以使用will-change更大程度的影响分层结果。 使用chrome浏览器f12点击图层就可以看到当前页面的分层 绘制 主线程会为每一层生成指令集用于描述这一层如何画出来。 分块 绘制完成后接下来会交给合成线程来处理合成线程会把每一层进行分块处理分成更小的区域 分块过程会启用多个线程来处理。 光栅化 接下来会交给GPU进程处理优先处理靠近视图窗口的块处理后的结果就是一个个位图。(此过程会⽤到 GPU 加速 ) 画 合成线程拿到每个块后会生成一个个 quad指引信息。 指引会标记出每个位图应该画到屏幕的某个位置还会考虑缩放旋转变形等。 变形发生在合成线程说于主线程无关之所以transform效率高也是因为于此。 合成线程会把quad交给GPU进程再由GPU进程交给GPU硬件处理最后画到了屏幕上。 完整过程 网络线程接收到一个HTML会添加一个渲染任务到消息队列后经过事件轮询主线程会取出执行渲染任务开启渲染流程渲染流程分为多个阶段 解析HTML解析css执行js生成DOM,CSSOMS树。 计算样式遍历DOM树计算出最终样式生成一个带有样式的DOM树。 布局遍历DOM树生成几何信息的layout树layout树和DOM树通常不一一对应。 分层为了提高效率使用一套复杂的策略分层滚动条transform都会影响分层will-change会更大程度的影响分层结果。 绘制为每一层生成指令集用于描述如何画出它。 到这里主线程已处理完毕接下来交给其他线程处理 分块接下来由合成线程会使用多个线程把每一层分成更小的区域。 光栅化会使用GPU进程把每个块生成位图。 画合成线程拿到块层后生成一个个指引之后交给GPU线程GPU线程产生系统调用交给GPU硬件显示到屏幕上。 面试题 看完以上浏览器是渲染页面的全流程那么下面的几道经典面试题也就迎刃而解了。不懂得可以多看几遍流程加深理解。 什么是 reflow回流 回流的本质就是重新计算layout树 浏览器为了尽可能减少reflow和repaint操作会合并这些操作等到js全部执行完成后再去重新计算所以回流改变是异步的。 那么什么时候会产生同步的layout呢? 当 JS 获取布局属性时比如getComputedStyle()或currentStyle、offsetTop、offsetLeft、offsetWidth、offsetHeight等等。因为异步会导致获取到错误的值浏览器在反复权衡下最终决定获取属性立即 reflow。 什么是 repaint重绘 repaint的本质就是根据分层信息计算了绘制指令。 当改动了可见样式后就会触发重绘。 由于布局样式也是可见样式所以reflow一定会触发repaint。 为什么transform效率高 因为transform不涉及到reflow和repaint它只影响最后一个画的阶段所以效率高。 由于画draw阶段在合成线程中所以几乎不影响主线程反之主线程哪怕在忙也不会影响到transform的变化。 有问题的地方还请大佬及时指出我会及时修改谢谢
http://www.pierceye.com/news/583837/

相关文章:

  • 学校网站建设代码不重名的建筑公司名字
  • 网站开发模块的需求海外销售平台有哪些
  • 前端和后端的区别工资郑州网站优化怎样做
  • 小程序模板平台有哪些网站优化包括哪些内容
  • 免费建网站的好的移动端网站模板下载
  • 青岛网站优化排名视频源网站怎么做
  • 做网站找我二级学院网站建设方案
  • 知名网站建设公司 北京近期网络营销的热点事件
  • 网站开发产品经理网站例子
  • 动态静态结合网站网站做404是什么意思
  • 注册域名的网站网站建设的具体步骤
  • 行业网站分类自建站排名
  • 网站备案 登陆安徽省住房和城乡建设厅网站领域
  • 做个网站需要多少钱.网站建设合同注意事项
  • 中国诚信建设网站在线代码生成器
  • 长沙企业网站建设团队目前网络最好的挣钱平台
  • 国家建设工程安全质量监督网站友情链接网
  • 适合html初学者做的网站中卫网站推广软件
  • 一个vps主机放两个网站 速度怎么做发卡网站
  • 海米云网站建设网站开发 去哪里找页面
  • 天津做网站优化的公司新手学做网站优化
  • 万网怎么上传网站wordpress google字体 360
  • 为什么建设的网站有时候访问慢6紫金优化网站制作
  • 如何在公司系统建网站广州短视频seo哪家好
  • 电气网站开发福安网站定制
  • 推荐一下做图文的网站html简单的个人网页代码
  • 网页新建站点网站建设缺陷
  • 移动端网站推广怎么申请pc网站域名
  • 外国男男做暧暧视频网站二级建造师考试试题
  • 普通网站建设是什么wordpress主题显示不