首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么 CSS 动画比 JavaScript 高效?

,看看上面的封面图,是不是相当的炫酷,以为我是代码写出来的?...本文主要讲以下这些内容 浏览器渲染流程 回流和重绘 CSS 动画 JS 动画 两者对比 1....每一次的回流都会将网页内容重新渲染,只是我们人眼感觉不到有任何变化,但是它确实是会清空页面的,再从页面的左上角的第一个像素点从左到右从上到下这样一点一点渲染,每次回流都会是这样的过程,只是感觉不到而已...第三点 性能的高效,在我们前面讲到了回流和重绘,如果我们要操作一个元素向右移动,我们可能需要控制 dom.style.left 属性,每次来改变元素的位置,而结合我们所说的,几何属性的改变必然会引起回流...,回流必然引起重绘,可想而知如果我们采用 JS 来实现动画,这个代价有多大,这会造成浏览器在不断的计算页面,从而导致浏览器内存堆积。

66910

网站页面滚动加载动画JS特效

终于尘埃落定了,前段时间忙的不可开交,结婚,工作,因为婚假+年假一起休的,导致很长时间没有更新博客了,今天抽空给大家带来了一个js特效,网站模块延迟加载的动画,假期之前就想着制作这个功能,页面滚动加载...简介 和 WOW.js 一样,scrollReveal.js 也是一款页面滚动显示动画的 JavaScript,能让页面更加有趣,更吸引用户眼球。...不同的是 WOW.js动画只播放一次,而 scrollReveal.js动画可以播放一次或无限次;WOW.js 依赖 animate.css,而 scrollReveal.js 不依赖其他任何文件...虽然 scrollReveal.js 不依赖 animate.css,但它的动画也是用 CSS3 创建的,所以它不支持 IE10 以下的浏览器。...如果不喜欢这个可以试试wow.js,网站页面滚动加载动画JS特效(二)。

11.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

为什么 CSS 动画比 JavaScript 高效?

,看看上面的封面图,是不是相当的炫酷,以为我是代码写出来的?...本文主要讲以下这些内容 浏览器渲染流程 回流和重绘 CSS 动画 JS 动画 两者对比 1....每一次的回流都会将网页内容重新渲染,只是我们人眼感觉不到有任何变化,但是它确实是会清空页面的,再从页面的左上角的第一个像素点从左到右从上到下这样一点一点渲染,每次回流都会是这样的过程,只是感觉不到而已...第三点 性能的高效,在我们前面讲到了回流和重绘,如果我们要操作一个元素向右移动,我们可能需要控制 dom.style.left 属性,每次来改变元素的位置,而结合我们所说的,几何属性的改变必然会引起回流...,回流必然引起重绘,可想而知如果我们采用 JS 来实现动画,这个代价有多大,这会造成浏览器在不断的计算页面,从而导致浏览器内存堆积。

92120

css3动画代替js脚本实现欢迎页面动画

1.使用脚本操作dom元素 在页面加载时,使用js控制dom的animation setTimeout(function() { $('.welcome').fadeOut(1000...setTimeout(function() { $('.painted-scroll').fadeOut(1000) }, 13000) 2.使用css3的animation实现 两个动画通过动画延时属性...gif转换有点问题,效果不是很柔和 3.比较 两者都能实现类似效果,但是在css3动画中可以实现跟多的细节,通过transition-timing-function是不是可以做跟多的改变呢,现在流行的趋势中...,mvvm的思想都是尽量不用dom操作,所以说将来的css3动画会右更多的发展空间 在现在流行的js库中,实现动画更多的使用的是css3的animation实现,还有浏览器对css3的支持度越来越高,

4.1K20

网站页面滚动加载动画JS特效(二)

昨天发布了网站页面滚动加载动画JS特效,但是加载的页面并不怎么完美,文章页面不能直接加载出来,需要滚动条继续下来,可能是没有调节js导致的,所以今天又重新测试了wow.js,感觉这个不错,很喜欢,有兴趣的可以测试下...页面在向下滚动的时候,有些元素会产生细小的动画效果。虽然动画比较小,但却能吸引你的注意。比如刚刚发布的 iPhone 6 的页面(查看)。如果你希望你的页面也更加有趣,那么你可以试试 WOW.js。...WOW.js 依赖 animate.css,所以它支持 animate.css 多达 60 多种的动画效果,能满足您的各种需求。 ?...浏览器兼容 IE10+ Chrome Firefox Opera Safari IE6、IE7 等老旧浏览器不支持 CSS3 动画,所以没有效果;而 wow.js 也使用了 querySelectorAll...class animateClass 字符串 ‘animated’ animation.css 动画的 class offset 整数 0 距离可视区域多少开始执行动画 mobile 布尔值 true

7.4K30

chrome对页面重绘和回流以及优化进行优化

页面的绘制时间(paint time)是每一个前端开发都需要关注的的重要指标,它决定了你的页面流畅程度。而如何去观察页面的绘制时间,找到性能瓶颈,可以借助Chrome的开发者工具。回流与重绘1....这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。...注意:回流必将引起重绘,而重绘不一定会引起回流回流何时发生:当页面布局和几何属性改变时就需要回流。...对具有复杂动画的元素使用绝对定位,使它脱离文档流,否则会引起父元素及后续元素频繁回流。...基本原则就是,把动画元素用position:absolute踢出文档流,这样R&R就限制在了absolute元素的子节点。告诉浏览器,我这块结构跟其他的单独渲染,不要搅和全页面了。

83010

前端20个真正灵魂拷问,吃透这些你就是中级前端工程师 【上篇】

回流必将引起重绘,重绘不一定会引起回流 回流(Reflow): 当Render Tree中部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流 下面内容会导致回流...这点是前端性能优化的基础,而性能优化是前端最重要的核心基础技能点,也是面试官最看中的基础之一 2.你对This了解,有自己实现过call,apply,bind?...但是定时器动画一直存在两个问题 第一个就是动画的循时间环间隔不好确定,设置长了动画显得不够平滑流畅,设置短了浏览器的重绘频率会达到瓶颈,推荐的最佳循环间隔是17ms(大多数电脑的显示器刷新频率是60Hz...是由浏览器专门为动画提供的 API,在运行时浏览器会自动优化方法的调用,并且如果页面不是激活状态下的话,动画会自动暂停,有效节省了 CPU 开销 性能对比: requestAnimationFrame...V8 堆的整体大小等于新生代所用内存空间加上老生代的内存空间,而只能在启动时指定,意味着运行时无法自动扩充,如果超过了极限值,就会引起进程出错。

1.2K30

十人九问,回流和重排怎么优化?

(因为隐藏元素不在render树内,因此修改隐藏元素不会触发回流重绘) 4.将复杂的节点元素脱离文档流,降低回流成本 5.将CSS的引入文件放在文件头部,js引入文件放到尾部 6. css3硬件加速...因为在display属性为none的元素上进行的DOM操作不会引发回流和重绘。 具有复杂动画的元素使用绝对定位,使它脱离文档流 比起考虑如何减少回流重绘,我们更期望的是,根本不要回流重绘。...划重点:使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘 。...但是对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能。...GPU(GPU中文翻译为“图形处理器),展示在页面上。

12110

【春节日更】重排 与 重绘 的知识点

重绘不一定需要重排,重排必然会导致重绘 03 什么情况会触发 触发重排的条件:任何页面布局和几何属性的改变都会触发重排。...比如: 页面渲染初始化;(无法避免) 添加或删除可见的DOM元素; 元素位置的改变,或者使用动画; 元素尺寸的改变——大小,外边距,边框; 浏览器窗口尺寸的变化(resize事件发生时); 填充内容的改变...使用css3硬件加速,可以让transform、opacity、filters等动画效果不会引起回流重绘 js 优化 1....避免使用JS一个样式修改完接着改下一个样式,最好一次性更改CSS样式,或者将样式列表定义为class的名称 2. 避免频繁操作DOM,使用文档片段创建一个子树,然后再拷贝到文档中 3....避免循环读取offsetLeft等属性,在循环之前把它们存起来 5.对于复杂动画效果,使用绝对定位让其脱离文档流,否则会引起父元素及后续元素大量的回流 参考: https://segmentfault.com

57420

浏览器渲染之回流重绘

比如用 jQuery 的 animate 函数做一个动画、对一个数据集进行排序或者往页面里添加一些 DOM 元素等。...2.JS / CSS > 样式 > 绘制 > 合成 如果修改了背景图片、文字颜色或阴影等不会影响页面布局的属性,则浏览器会跳过布局,但是后面的绘制以及后面的流程还是会执行的。...如何减少回流与重绘 上面我们已经介绍了像素管道相关内容,知道回流和重绘的代价是非常昂贵的,如果我们不停的在改变页面的布局,就会造成浏览器耗费大量的开销在进行页面的计算,对用户体验非常的不友好。...复合层的大小、层的管理也更为复杂,在一些低端和终端移动端设备中更为明显,滥用 GPU 加速会引起页面卡顿甚至闪退。...Render_tree_construction) 渲染性能 (https://developers.google.cn/web/fundamentals/performance/rendering/) 你真的了解回流和重绘

1.6K40

前端| 性能优化总结

04 .css放在头部文件,js文件放在底部,css执行会阻塞渲染,阻止js执行 js加载和执行会阻塞HTML解析,阻止cssom构建 (cssom 指css object model,它和DOM类似,...09 浏览器重绘(Repaint)和回流(Reflow): 回流必将引起重绘,重绘不一定会引起回流。...会导致回流的操作: (1) 页面首次渲染 (2) 浏览器窗口大小发生改变 (3) 元素尺寸或位置发生改变元素内容变化(文字数量或图片大小等等) (4)元素字体大小变化 (5)添加或者删除可见的 DOM...将动画效果应用到 position 属性为 absolute 或 fixed 的元素上。 避免使用 CSS 表达式(例如:calc())。...对具有复杂动画的元素使用绝对定位,使它脱离文档流,否则会引起父元素及后续元素频繁回流

73220

浏览器重绘与回流

重绘与回流 重绘与回流是浏览器渲染的时候进行的操作,当页面内容发生改变的时候,就会触发重绘或者回流 重绘 当渲染树中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color...每个页面至少需要一次回流,就是在页面第一次加载的时候,这时候是一定会发生回流的,因为要构建渲染树,回流一定触发重绘。 Reflow的成本比Repaint的成本高得多的多。...绝对定位 对于复杂动画效果,由于会经常的非常频繁的引起回流重绘,可以使用绝对定位,让它脱离文档流,否则会引起父元素以及后续元素频繁的回流。...平滑度换取速度 Opera还建议我们牺牲平滑度换取速度,其意思是指若可能想每次1像素移动一个动画,但是如果此动画及随后的回流使用了100%的CPU,动画就会看上去是跳动的,因为浏览器正在与更新回流做斗争...CSS3硬件加速 CSS3硬件加速也就是GPU加速,可以transform、opacity、filters这些动画会引起回流重绘,但是对于动画的其它属性,比如background-color这些,还是会引起回流重绘的

97820

浏览器渲染页面与DOM相关常见的面试题以及问题

鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲染。... console.log($('#d1').html()) 什么情况会引起重排/回流(...; 使用display:none技术,只引发两次回流和重绘; 使用cloneNode(true or false) 和 replaceChild技术,引发一次回流和重绘; 不要经常访问会引起浏览器flush...队列的属性,如果你确实要访问,利用缓存; 让元素脱离动画流,减少回流的Render Tree的规模; DOM是什么?...Render树是DOM树和CSSOM树构建完毕才开始构建的? 这三个过程在实际进行的时候不是完全独立,而是会有交叉。会造成一边加载,一遍解析,一遍渲染的工作现象。

1.2K30

你真的了解回流和重绘?(面试必问)

该过程的第一步和第三步可能会引起回流,但是经过第一步之后,对DOM的所有修改都不会引起回流,因为它已经不在渲染树了。...对于复杂动画效果,使用绝对定位让其脱离文档流 对于复杂动画效果,由于会经常的引起回流重绘,因此,我们可以使用绝对定位,让它脱离文档流。否则会引起父元素以及后续元素频繁的回流。这个我们就直接上个例子。...划重点:使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘 。...但是对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能。 本篇文章只讨论如何使用,暂不考虑其原理,之后有空会另外开篇文章说明。...重点 使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘 对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能

2K40

你真的了解回流和重绘

该过程的第一步和第三步可能会引起回流,但是经过第一步之后,对DOM的所有修改都不会引起回流,因为它已经不在渲染树了。...对于复杂动画效果,使用绝对定位让其脱离文档流 对于复杂动画效果,由于会经常的引起回流重绘,因此,我们可以使用绝对定位,让它脱离文档流。否则会引起父元素以及后续元素频繁的回流。这个我们就直接上个例子。...划重点:使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘 。...但是对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能。 本篇文章只讨论如何使用,暂不考虑其原理,之后有空会另外开篇文章说明。...重点 使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘 对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能

1.3K21

你真的了解回流和重绘

该过程的第一步和第三步可能会引起回流,但是经过第一步之后,对DOM的所有修改都不会引起回流重绘,因为它已经不在渲染树了。...对于复杂动画效果,使用绝对定位让其脱离文档流 对于复杂动画效果,由于会经常的引起回流重绘,因此,我们可以使用绝对定位,让它脱离文档流。否则会引起父元素以及后续元素频繁的回流。这个我们就直接上个例子。...使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘 。 2....对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能。 本篇文章只讨论如何使用,暂不考虑其原理,之后有空会另外开篇文章说明。...重点 使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘 对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能

4.9K50

前端面试总结与思考

will-change、video、iframe等标签,浏览器会自动将该节点变为图层 CSS3 硬件加速(GPU加速),使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘...但是对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能 我们可以先看个 demo例子 。...~ 重点 使用css3硬件加速,可以让transform、opacity、filters这些动画会引起回流重绘 对于动画的其它属性,比如background-color这些,还是会引起重绘的,但是不会引起回流...,使它脱离文档流,否则会引起父元素及后续元素频繁回流 在这对于复杂动画效果,由于会经常的引起回流重绘,因此,我们可以使用绝对定位,让它脱离文档流。...否则会引起父元素以及后续元素频繁的回流,代码可以看页面 → demo例子 打开这个例子后,我们可以打开控制台,控制台上会输出当前的帧数(虽然不准)。但是我们发现帧数一直都没到60。

89320

web前端优化之reflow(减少页面回流)

reflow(回流)是指浏览器为了重新渲染部分或者全部的文档,重新计算文档中的元素的位置和几何构造的过程。 因为回流可能导致整个Dom树的重新构造,所以是性能的一大杀手。...以下操作会引起回流: ① 改变窗口大小 ② font-size大小改变 ③ 增加或者移除样式表 ④ 内容变化(input中输入文字会导致) ⑤ 激活CSS伪类(:hover) ⑥ 操作class属性,新增或者减少...⑦ js操作dom ⑧ offset相关属性计算 ⑨ 设置style的值 ...... reflow与repaint是减缓js的几大主要原因,尤其是reflow更是性能杀手,所以我们应该想法避免。...② 具有动画效果请使用absolute 因为absolute元素的改变对其它元素的回流影响不大,所以我们的动画效果的元素还是将他搞成absolute吧。...⑥ 动画移动时候,要控制 比如我们拖动元素时候,我是在他x或者y坐标改变5px才操作,这样虽说降低了平滑度,但是对性能有提高。

1.4K70

「一道面试题」输入URL到渲染全面梳理中-页面渲染篇

(Repaint) 当我们修改元素的尺寸,页面就会回流(Reflow) 当页面需要Repaing和Reflow时GUI线程执行,绘制页面 回流(Reflow)比重绘(Repaint)的成本要高,我们要尽量避免...,所以优化方案中一般都包括,尽量避免 回流 什么会引起回流 页面渲染初始化 DOM结构改变,比如删除了某个节点 render树变化,比如减少了padding 窗口 resize 某些 JS 属性,引发回流...属性会引起回流重绘,可以去这个网站查查看 https://csstriggers.com/ 合成(Composite) 终于来到了最后一个点 合成 ,我们先来总结一下上面的步骤,到目前我们经历渲染过程如下...就不要使用 table 布局了 CSS 动画中尽量只使用 transform 和 opacity ,不会发生重排和重绘 隐藏在屏幕外,或在页面滚动时,尽量停止动画 尽可能只使用 CSS 做动画,CSS动画肯定比...JS 动画要好很多 避免浏览器的隐式合成 改变复合层的尺寸 最后 上面讲的有些随意,最后再来波官方点的总结吧 发起一个请求,我们拿到了页面,下载完的网页将被交给浏览器内核(渲染进程)进行处理 首先,根据顶部定义的

76720

【前端性能优化】深入解析重绘和回流,构建高性能Web界面

哪些操作会引起回流(reflow)?...答案: 引起回流的操作包括但不限于: 添加或删除可见的DOM元素; 元素尺寸或位置的动态改变(例如,通过JavaScript修改元素的宽高或使用动画); 浏览器窗口尺寸变化,导致页面布局调整; 计算某些特定的...怎样减少重绘和回流,提高页面性能?...答案: 减少重绘和回流的方法包括: 使用CSS transform和opacity:对于动画,尽量使用transform和opacity属性,因为这些变换不会引起回流。...为什么说回流一定会引起重绘,而重绘不一定引起回流? 答案: 回流是因为元素的尺寸、位置等布局信息发生了变化,这必然导致页面的一部分或全部需要重新布局和绘制,因此回流之后必然伴随着重绘。

7810
领券