千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:长沙千锋IT培训  >  技术要点  >  千锋长沙前端培训分享之web前端的回流和重绘

千锋长沙前端培训分享之web前端的回流和重绘

来源:千锋教育
发布人:千锋长沙
时间: 2022-01-20 16:33:08

       今天我们为大家介绍一下web前端中涉及到的回流和重绘的概念,先来看一下官方给出的定义:

src=http___www.situedu.com_ueditor_php_upload_image_20210825_1629857076579896.jpg&refer=http___www.situedu

       回流(reflow):对于DOM结构中的各个元素都有自己的盒子模型,这些都需要浏览器根据各种样式(浏览器的、开发人员定义的等)来计算并根据计算结果将元素放到它该出现的位置,这个过程称之为reflow ;

       重绘(repaint):当各种盒子的位置、大小以及其他属性,例如颜色、字体大小等都确定下来后,浏览器于是便把这些元素都按照各自的特性绘制了一遍,于是页面的内容出现了,这个过程称之为repaint。

       这是什么?我是谁?我在哪儿?其实简单的说:回流(reflow)就是元素的位置发生了改变(不管是添加、删除元素,还是元素尺寸改变),会触发回流。比如,这里有2个p标签,我们想在两个p标签之间插入另外一个p标签这个时候老大还是老大,插入一个新老二之后,原来的老二变成了老三,位置发生了改变会触发回流。那么重绘(repaint)简单的说,元素位置不会发生改变,视觉效果会有所改变。

       元素的位置没有发生改变,只有文字颜色做了修改,这个时候就发生了重绘。知道了回流和重绘,我们在做项目的过程中,要尽量避免,这样可以使我们写出高性能的DOM。例如:我们在给元素添加样式修饰时,避免一条条更改

<div id="person">我是一个工具人</div>

<script>

var person = document.getElementById('person');

//不要逐条更改

person.style.width = 300 + 'px';

person.style.height = 200 + 'px';

person.style.backgroundColor = 'red';

person.style.fontSize = 20 + 'px';

person.style.color = 'green';

</script>

可以将修饰放入一个class名中,做一次class名插入

<style>

.person_style{

width: 300px;

height: 200px;

background-color: red;

font-size: 20px;

color: green;

}

</style>

<script>

var person = document.getElementById('person');

person.classList.add('person_style')

</script>

还有我们要循环插入很多DOM元素时,可以使用documentFragment

<script>

//创建DocumentFragment

var fragment = document.createDocumentFragment();

//把DOM元素添加到fragment

var oDiv = document.createElement('div');

for(let i = 0; i < 10; i++){

oDiv.innerHTML += "number:" + i + '<br>';

fragment.appendChild(oDiv)

}

//最后把fragment插入到页面

document.body.appendChild(fragment)

</script>

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

最新文章NEW

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>