css的重绘与重排实现实例

本文主要和大家介绍了css重绘与重排的方法的相关资料,小编觉得挺不错的,现在分享给大家,希望能帮助到大家。

浏览器加载页面原理

通常在文档初次加载时,浏览器引擎会解析HTML文档来构建DOM树,之后根据DOM元素的几何属性构建一棵用于渲染的树。渲染树的每个节点都有大小和边距等属性,类似于 盒子模型 (由于隐藏元素不需要显示,渲染树中并不包含DOM树中隐藏的元素)。当渲染树构建完成后,浏览器就可以将元素放置到正确的位置了,再根据渲染树节点的样式属性绘制出页面。由于浏览器的 流布局,对渲染树的计算通常只需要遍历一次就可以完成。但table及其内部元素除外,它可能需要多次计算才能确定好其在渲染树中节点的属性,通常要花3倍于同等元素的时间。这也是为什么我们要避免使用table做布局的一个原因。

重绘

重绘是一个元素 外观的改变 所触发的浏览器行为,例如改变vidibility、outline、背景色等属性。浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。重绘不会带来重新布局,并不一定伴随重排。浏览器在进行重绘和重排的时候是要付出高昂的性能代价的。

立即学习“前端免费学习笔记(深入)”;

重排

重排是更明显的一种改变,可以理解为渲染树需要重新计算。下面是常见的触发重排的操作:

DOM元素的几何属性变化。

DOM树的结构变化。

例如节点的增减、移动等.

获取某些属性。

当获取一些属性时,浏览器为取得正确的值也会触发重排。这样就使得浏览器的优化失效了。这些属性包括:offsetTop、offsetLeft、 offsetWidth、offsetHeight、scrollTop、scrollLeft、scrollWidth、scrollHeight、clientTop、clientLeft、clientWidth、clientHeight、getComputedStyle() (currentStyle in IE)。所以,在多次使用这些值时应进行缓存。

此外,改变元素的一些样式,调整浏览器窗口大小,滚动条出现等等也都将触发重排。

减少重排次数和重排影响范围

1、将多次改变样式属性的操作合并成一次操作。例如,

JS:    var changep = document.getElementById(‘changep’);    changep.style.color = ‘#093′;    changep.style.background = ‘#eee';    changep.style.height = ‘200px';    可以合并为:CSS:    p.changep {        background: #eee;        color: #093;        height: 200px;    }JS:    document.getElementById(‘changep’).className = ‘changep';

登录后复制

2、 将需要多次重排的元素,position属性设为absolute或fixed,这样此元素就脱离了文档流,它的变化不会影响到其他元素。例如有动画效果的元素就最好设置为绝对定位。

3、 在内存中多次操作节点,完成后再添加到文档中去。例如要异步获取表格数据,渲染到页面。可以先取得数据后在内存中构建整个表格的html片段,再一次性添加到文档中去,而不是循环添加每一行。

4、 由于display属性为none的元素不在渲染树中,对隐藏的元素操作不会引发其他元素的重排。如果要对一个元素进行复杂的操作时,可以先隐藏它,操作完成后再显示。这样只在隐藏和显示时触发2次重排。

5、 在需要经常取那些引起浏览器重排的属性值时,要缓存到变量

相关推荐:

页面重绘及回流的优化方法

页面重绘及回流的优化方法

页面重绘及回流的优化方法

以上就是css的重绘与重排实现实例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2899761.html

(0)
上一篇 2025年3月10日 23:49:36
下一篇 2025年3月10日 23:49:51

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 你必须要知道的俩个CSS字体属性

    这次给大家带来你必须要知道的俩个css字体css字体,使用css字体属性的css字体有哪些,下面就是实战案例,一起来看一下。 如何给英文和中文设置不同的字体? 但凡是中文字体,里面都包含了英文,但凡是英文字体,里面都没有包含中文,也就是说中…

    编程技术 2025年3月10日
    200
  • 你必须要知道的CSS三大特性

    这次给大家带来你必须要知道的css三大特性,使用css三大特性的注意事项有哪些,下面就是实战案例,一起来看一下。 CSS三大特性 : 继承,层叠,优先级 一. 继承性 1.什么是继承性? 作用: 给父元素设置一些属性, 子元素也可以使用, …

    编程技术 2025年3月10日
    200
  • CSS的显示模式如何使用

    这次给大家带来css的显示模式如何使用,使用css的显示模式的注意事项有哪些,下面就是实战案例,一起来看一下。 一. 标签补充  div 和s pan 1.什么是div? 作用: 一般用于配合css完成网页的基本布局 2.什么是span? …

    编程技术 2025年3月10日
    200
  • CSS的背景与精灵图

    这次给大家带来css的背景与精灵图,使用css的背景与精灵图的注意事项有哪些,下面就是实战案例,一起来看一下。 1.如何设置标签的背景颜色? 在CSS中有一个注意事项:属性, 就是专门用来设置标签的背景颜色的 取值: 具体单词  rgb r…

    编程技术 2025年3月10日
    200
  • HTML与CSS的盒子模型

    这次给大家带来html与css的盒子模型,使用html与css的盒子模型的注意事项有哪些,下面就是实战案例,一起来看一下。 一.边框 (上) 1.什么边框? 边框就是环绕在标签宽度和高度周围的线条 2.边框属性的格式 立即学习“前端免费学习…

    2025年3月10日
    200
  • CSS实现宽高等比布局的代码

    宽度是高度的两倍(等比缩放)实现思路: 以父级元素为基准, 子级 width:100%; (也就是父级宽度的100%), padding-top:50% (也就是父级宽度的50%,根据css规范, padding用百分比表示的话, padd…

    2025年3月10日
    200
  • css实现背景图片半透明内容不透明代码分享

    本文主要和大家介绍了纯css实现背景图片半透明内容不透明的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助到大家。 最近做一个登陆界面的,突然想使用这种背景图片透明,而内容不透明的效果,这里我就说一说我的两个思路吧。 效…

    2025年3月10日
    200
  • CSS实现数字标签样式

    大家在逛购物网站或者小说网站的时候都会发现,有商品或小说封面图旁边都有排名或者受欢迎等标志,那么我们今天就来讲一下是如何实现这些标志的吧! CSS实现排行榜标签样式   即:    主要分以下几步介绍我的实现过程: 初始实现方法(不成功) …

    2025年3月10日 编程技术
    200
  • css实现商品封面图向上浮动方法详细讲述

    本篇文章讲述了css如何实现商品封面图触摸向上浮动,不了解css如何实现商品封面图触摸向上浮动同学,我们一起来看看本篇文章吧!、 今天在写css时需要实现:当鼠标悬停在由图片和介绍组成的浮动时,榴莲向上浮动的效果。 我在实现这个效果时思路分…

    2025年3月10日
    200
  • CSS实现分隔线的多种方法详细讲解

    本篇文章讲述了css如何实现分隔线的多种方法,我们在写前端页面的时候分隔线可以起到美观作用,css实现分隔线的方法有多种,那么我们就一起来看看使用css如何实现分隔线更美观点吧! 单个标签实现分隔线: html: 小小分隔线 单标签实现 登…

    编程技术 2025年3月10日
    200

发表回复

登录后才能评论