整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS 面试题:什么是 回流(reflow)- 重绘

CSS 面试题:什么是 回流(reflow)? 重绘(repaint)?

面的两个问题还是比较常问到的, 希望大家能够好好的记忆一下。

1. 什么是 回流(reflow)? 重绘(repaint)?

1-1. 回流 的核心概念:
     1. 当 render Tree 中的一部分(或者全部) 因元素的 规模尺寸 、 布局 、 隐藏 等改变而需要重新构建, 这就称为回流 。
     2. 当页面 布局和集合属性 改变时就需要回流 。
1-2. 回流详细解析:
     1. 回流更多的是涉及到页面元素大小的变化, 尺寸的变化, 布局的变化, 这些核心概念变化的时候, 会触发回流 。
     2. 实例: 网站的懒加载, 在下滑的时候会有图片增加到我们的 dom Tree 上, 这就是典型的一种 Render Tree 在动态过程中它的布局改变 。
     3. 实例: 对图片做一些特殊的效果, 如鼠标放上变大, 这种场景图片大小的变化, 也是会触发回流的 。

     
2-1. 重绘的核心概念:
     1. 当 render Tree 中的一些元素需要更新属性, 而这些属性只是影响元素的外观, 风格, 而不会影响布局, 比如 background-color, 这就是重绘 。
2-2. 重绘详细解析:
     1. 涉及重绘的时候, 不一定触发回流; 回流是一定会触发重绘的

     
3. 重绘与回流这些与浏览器本身也是有关系的 。
   1. 不同的浏览器渲染机制不一样, 重绘与回流发生的情况也不一样。

2. 那些 CSS 属性会触发 "回流" ?

1. 触发页面重新布局的属性:
   1. 盒模型相关的属性会触发重新布局 。
      1. width
      2. height
      3. padding
      4. margin
      5. display
      6. boeder-width
      7. border
      8. min-height
   2. 定位属性以及浮动也会触发重新布局 。
      1. top
      2. bottom
      3. left
      4. right
      5. position
      6. float
      7. clear
   3. 改变节点内部文字结构也会触发重新布局 。
      1. text-algin
      2. overflow-y    规定是否对内容的上/下边缘进行裁剪 - 如果溢出元素内容区域的话/ 滚轮
      3. font-weight
      4. overflow
      5. font-family
      6. line-height
      7. vertival-algin    设置元素的垂直对齐方式
      8. white-space   设置如何处理元素内的空白
      9. font-size

3. 那些 CSS 属性会触发 "重绘" ?

1. 那些 CSS 属性会触发重绘(只会触发重绘不会触发回流)?
   1. color
   2. border-style
   3. border-radius
   4. visibility   规定元素是否可见
   5. text-decoration    规定添加到文本的修饰
   6. background
   7. background-image
   8. background-position
   9. background-repeat
   10. background-size
   11. outline-color
   12. outline
   13. outline-style
   14. outline-width   设置元素整个轮廓的宽度
   15. box-shadow      阴影

这里就是一些概念性的内容与需要加深记忆的内容, 最好的方法就是每天都来看一遍。

之前有整理过部分知识点, 现在将整理的相关内容, 验证之后慢慢分享给大家; 这个专题是 "前端面试题" 的相关专栏; 大概会有200+的文章。

如果对大家有所帮助,可以点个关注、点个赞; 文章会持续打磨 。

有什么想要了解的前端知识, 可以在评论区留言, 会及时分享所相关内容 。

种动态创建元素的区别

  • document.write()
  • element.innerHTML
  • document.createElement()

区别

1.document.write是直接将内容写入页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘

2.innerHTML是将内容写入某个DOM节点,不会导致页面全部重绘

3.innerHTML创建多个元素效率更高(不要拼接字符串,采取数组形式拼接),结构稍微复杂(innerHTML采取数组形式拼接会快一点比createElement()快)

4.createElement()创建多个元素效率稍低一点点,但是结构更清晰

总结:不同浏览器下,innerHTML效率要比creatElement高

动态生成表格案例分析

  1. 因为里面的学生数据都是动态的,我们需要js动态生成。这里我们模拟数据,自己定义好数据。数据我们采取对象形式存储。

2.所有的数据都是放到tbody里面的行里面。

3.因为行很多,我们需要循环创建多个行(对应多少人)

源码如下

效果图如下

百度搜索 分形科技 查看更多精彩内容

网站建设中关于技术问题主要可以分形两部分,一般都是由专业的技术人员来负责完成,其中一部分是网站后台的技术开发,主要负责的是网站的后台系统开发问题;另一部分就是网站的前端技术开发,主要负责的是网页前端Web开发的问题。这两大块儿技术问题解决的好否是企业能否获得一个优秀网站的关键,本文中分形科技主要为大家介绍的是其中的前端开发技术。

首先,我们先来分析一下什么是前端开发

前端开发又称Web前端开发技术,以前叫做网页制作,其主要职能就是把网站的界面更好地呈现给用户。前端开发工程师通过运用专门的技术软件让企业网站互联网化,使静态的页面动态化。Web前端开发涵盖的知识面非常广,既有具体的技术,又有抽象的理念。

其次,介绍一下前端开发技术人员需要掌握的专业技能

随着互联网技术的发展,前端开发技术变更越来越成熟,市场对于前端开发技术人员的专业技能要求也越来越高,具体的技能主要包括:1、掌握HTML,2、服务器端脚本语言,3、CSS和JavaScript等。

在了解以上的重要知识后,分形科技小编再为大家介绍一下网站建设前端开发如何应对浏览器的重绘和重排。浏览器重绘即repaint,浏览器的重排即reflows。重绘(repaint)是指一个元素外观的改变所触发的浏览器行为,浏览器会根据元素的新属性进行重新绘制,使网页元素呈现出新的外观。如改变vidibility、outline、背景色等属性。特点:重绘不会带来网页的重新布局,并不一定伴随重排。重排(reflows)是指网页中元素更明显的一种改变,可以理解为渲染树进行重新计算。因为浏览器重排比较复杂,所以,在这里分形科技重点要介绍的是浏览器重排的问题。

下面是分形科技为大家总结的一些常见可以触发重排的操作(不同的浏览器的情况很有一些不同):

1、DOM(文档对象模型)元素的几何属性发生变化时

当网页中DOM元素的几何属性变化时,渲染树中的相关节点就会失效,浏览器会根据DOM元素的变化重建构建渲染树中失效的节点。随之瑞来的就是重新绘制被重排的页面。特点:浏览器重排一定会引起浏览器的重绘。

2、浏览器引擎因获取某些属性而触发重排。

当浏览器引擎获取网页中一些属性时,浏览器为取得正确的值也会触发重排,所以我们在在多次使用这些属性值时应进行缓存。网站中可修改属性包括:offsetTop、offsetLeft、 offsetWidth、offsetHeight、scrollTop、scrollLeft、scrollWidth、scrollHeight、clientTop、clientLeft、clientWidth、clientHeight、getComputedStyle() (currentStyle in IE)。

3、改变元素的样式、调整窗口大小触发重排

网站建设前端开发中,改变网页中元元素的一些样式,或是调整浏览器窗口大小都会触发浏览器重排。避免方法:将网页中需要多次重排的元素的position属性设为absolute或fixed,这样此元素就脱离了文档流,不会影响到其他元素。

最后要提醒大家的是想要做好网站建设的前端开发就必须要在掌握专业技术的基础上重视实践的积累。