美文网首页
20161226作业

20161226作业

作者: 饥人谷_sunny | 来源:发表于2016-12-27 15:50 被阅读0次
  • CSS和JS在网页中的放置顺序是怎样的?

  • CSS应该放在页面的顶部的head标签中

由于Render Tree是由DOM树和CSSOM树组合成的,html页面需要等到CSS解析完成才能完成渲染,所以css应该放在head标签内,优先下载解析,以避免页面元素由于样式缺失造成瞬间的白屏或者给用户闪烁感。

  • JS应该放在<body>的底部</body>标签闭合之前;

  • 因为浏览器需要一个稳定的dom树结构,而且js中很有可能有代码直接改变了dom树结构,浏览器为了防止出现js修改dom树,需要重新构建dom树的情况,所以就会阻塞其他的下载和呈现。
    将JavaScript放在head内和body底部的区别也在于此,放在head里面,由于浏览器发现head里面有JavaScript标签就会暂时停止其他渲染行为,等待JavaScript下载并执行完成才能接着往下渲染,而这个时候由于在head里面这个时候页面是白的;如果将JavaScript放在页面底部,render Tree 已经完成大部分所以此时页面有内容呈现,即使遇到JavaScript阻塞渲染,也不会有白屏出现。

  • 如果CSS和JS都在head标签内,则应将JS放在所有CSS的前面。

  • JS的执行有可能依赖最新样式。比如,可能会有var width=$(#id").width,这意味着,JS代码在执行前,浏览器必须保证在此JS之前的所有CSS(无论外联还是内嵌)都已经下载和解析完成。
    把JS放在CSS后会导致页面阻塞,去等待CSS的下载。另外如果要在head引入JS尽量将JS内嵌。

  • 解释白屏FOUC

    • 浏览器的白屏与无样式内容闪烁(FOUC),是由于浏览器加载与显示页面方式不同造成的:
      在写HTML代码时,我们都是将CSS文件的引入位置放在头部(<head>标签内部),将js文件的引入位置放在底部(</body>前面)。
      含义:不同的浏览器对于CSS和HTML的处理方式不同,有的是等待CSS加载完成之后,对HTML元素进行渲染和展示(白屏问题)。有的是先对HTML元素进行展示,然后等待CSS加载完成之后重新对样式进行修改(FOUC无样式内容闪烁
      解释:
      1.如果把CSS样式放在底部,对于IE浏览器,在某些场景下(新窗口打开,刷新等)页面会出现白屏,而不是内容逐步展现,如果使用 @import标签,即使 CSS 放入link, 把JavaScript放在head中,脚本会阻塞后面内容的呈现,脚本会阻塞其后组件的下载,出现白屏问题。
      2.如果把CSS样式放在底部,对于IE浏览器,在某些场景下(点击链接,输入URL,使用书签进入等),会出现 FOUC 现象(逐步加载无样式的内容,等CSS加载后页面突然展现样式).对于 Firefox 会一直表现出 FOUC 。
  • asyncdefer的作用是什么?有什么区别

作用: async和defer``可以达到不阻塞渲染的效果。

  • 带有defer属性的<script>的标签可以放置在文档的任何位置。对应的JavaScript文件将在页面解析到<script>标签时开始下载,但不会执行,直到DOM加载完成,即onload事件触发前才会被执行。当一个带有defer属性的JavaScript文件下载时,它不会阻塞浏览器的其他进程,因此这类文件可以与其他资源文件一起并行下载。
    但是

defer属性只被IE4和Firefox 3.5更高版本的浏览器所支持,所以它不是一个理想的跨浏览器解决方案。在其他浏览器中,defer属性会被直接忽略,因此<script>标签会以默认的方式处理,也就是说会造成阻塞。然而,如果你的目标浏览器支持的话,这仍然是个有用的解决方案。

  • async的作用和defer一样,能够异步地加载和执行脚本,不因为加载脚本而阻塞页面的加载。
    但是

在有async的情况下,JavaScript脚本一旦下载好了就会执行,所以很有可能不是按照原本的顺序来执行的。如果JavaScript脚本前后有依赖性,使用async就很有可能出行错误。

  • 简述网页的渲染机制

  • 解析html构建DOM树
  • 解析CSS构建CSSOM树
  • 把DOM和CSSOM组合成渲染树(Render Tree)
  • 在渲染树的基础上进行布局,计算每个节点的几何结构(Layout Tree)
  • 把每个节点绘制到屏幕上(Painting)
Paste_Image.png

文章著作权归饥人谷_sunny和饥人谷所有,转载须说明来源

相关文章

  • 20161226作业

    CSS和JS在网页中的放置顺序是怎样的? CSS应该放在页面的顶部的head标签中 由于Render Tree是由...

  • 20161226

    外婆好点了可以吃点了,之前婆婆和我说她很难过外婆摔成这样,结果前天我问她外婆咋了,她竟然那天没去看外婆,好虚伪啊!...

  • 20161226

    好好的,就像千纸鹤一般,没天都不同 希望自己能每天都给自己一个印记 因为这些都是需要靠自己去完成的 没人能真正帮到...

  • 20161226

    使用单入口的app,控制不让访问代码所在目录,一般有两种实现: 使用web server的rewrite 规则,把...

  • 20161226

    新的一周开始,预报说明天要大幅度降温了,好想懒在被窝,动力快变成洪荒之力冲出体内吧。 1.昨晚的雪使得今天的天气变...

  • 20161226

    光学镀膜更换铝箔,上午TiO2 离子源条件beam 550、500,ACC600,下午纳睿ARHR。 lpcvd ...

  • 20161226

    日记第十四天。 所想要成功,你必须先在内心渴望它,并做好为之付出的觉悟和不断重复的行动。 任何事,想要逃避,拖延,...

  • 20161226

    20161226张峻豪张潇月妈妈成长日记,由于昨天潇月高烧晚上一直跟我睡,老公主动承担工作任务,让我在家陪孩子,有...

  • 你好20161226

    知道吗,有些事情都是在静中变

  • 日记20161226

    今天一天都很忙碌,因为从昨天就开始思考工作怎么干,所以显得忙中有序。 晚上还在写字台前写了一个小时的材料,可是今天...

网友评论

      本文标题:20161226作业

      本文链接:https://www.haomeiwen.com/subject/xzxevttx.html