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

Safari不重绘css动画之上的元素

Safari不重绘CSS动画之上的元素是指在Safari浏览器中,当一个元素上方有正在进行的CSS动画时,该元素不会被重绘。这意味着即使该元素的内容发生了变化,例如文本内容更新或者样式变化,它也不会立即显示出来,直到CSS动画完成或者被暂停。

这种行为是由于Safari浏览器的渲染机制所导致的。为了提高性能和流畅度,Safari会对页面进行优化,避免不必要的重绘。因此,在CSS动画之上的元素不会被重新绘制,以减少渲染的工作量。

然而,如果你希望在Safari中实现CSS动画之上元素的重绘,可以尝试以下方法:

  1. 使用will-change属性:将要进行动画的元素的will-change属性设置为transformopacity等,可以告诉浏览器该元素将要发生变化,从而触发重绘。
  2. 使用transform属性:在进行CSS动画时,尽量使用transform属性来实现动画效果,而不是使用topleft等属性。因为transform属性可以触发硬件加速,提高动画性能,并且可以避免元素不重绘的问题。
  3. 使用requestAnimationFrame方法:使用requestAnimationFrame方法来执行动画,这样可以确保动画在每一帧之间进行重绘,避免元素不重绘的问题。

总结起来,Safari不重绘CSS动画之上的元素是一种浏览器的优化机制,为了提高性能而采取的策略。如果需要在Safari中实现CSS动画之上元素的重绘,可以尝试使用will-change属性、transform属性或者requestAnimationFrame方法来解决。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

什么是回流与重 (Reflow & Repaint)

以Google,Firefox,Safari为例,Firefox 使用Geoko——Mozilla 自主研发渲染引擎,Safari 和Chrome 都使用 webkit。...添加或者删除可见DOM元素 激活CSS伪类(例如::hover) 查询某些属性或调用某些方法 主要有下面几个API 盒子操作相关 elem.offsetLeft, elem.offsetTop...事实上,回流确实比重成本更大,并且有时候并不是只回流一个元素,甚至会带动父元素或者子元素一起回流。...尽可能在 DOM 树最末端改变class。 避免设置多层内联样式。 将动画效果应用到position属性为absolute或fixed元素上。 避免使用CSS表达式(例如:calc())。...避免频繁读取会引发回流/重属性,如果确实需要多次使用,就用一个变量缓存起来。 对具有复杂动画元素使用绝对定位,使它脱离文档流,否则会引起父元素及后续元素频繁回流。

83610

分享 | 前端性能优化(CSS动画篇)

webkit变换元素 * 拥有加速CSS过滤器元素 * 元素有一个包含复合层后代节点(一个元素拥有一个子元素,该子元素在自己层里) * 元素有一个z-index较低且包含一个复合层兄弟元素(换句话说就是该元素在复合层上面渲染...) 需要注意是,如果图层中某个元素需要重,那么整个图层都需要重。...最好情况是,改变属性仅仅印象图层组合,变换(transform)和透明度(opacity)就属于这种情况 现代浏览器如Chrome,Firefox,Safari和Opera都对变换和透明度采用硬件加速...,所以会触发重布局 别使用CSS类名做状态标记 如果在网页中使用CSS类来对节点做状态标记,当这些节点状态标记类修改时,将会触发节点和重布局。...取而代之更好方法是使用translate,这个不会触发重布局 JS动画CSS3动画比较 我们经常面临一个抉择:是使用JavaScript动画还是使用CSS动画,下面将对比一下这两种方式 JS动画

1.9K20

CSS will-change,为什么能提升几十倍性能?

一种关键优化工具是CSS属性will-change,它可以告诉浏览器元素将要发生变化,从而提前分配资源并优化渲染。...加入will-change后,通过观察复合层,如图下 layer-start.gif 加入will-change后,元素会被提升到单独复合层,动画(重、重排)操作只会在单独复合层上进行,减少了原来页面层重和重排行为...安卓不会而iphone会,iphone上使用safari浏览器 解: will-change加入后,元素提升到复合层,浏览器其实会进行 光栅化 至于为什么safari浏览器在元素提升到复合层后,...,可以通过在执行完重排重后在适当时机移除will-change(让元素回到原来页面层,不在单独一个复合层)就可以解决 五、什么操作会将元素提升到复合层 在CSS中,以下属性可以将元素提升到复合层:...需要注意是,将元素提升到复合层也会增加内存占用和渲染复杂性,因此不应滥用。只有当元素需要频繁改变或有复杂动画效果时,才建议将其提升到复合层。

40540

你真的了解回流和重

这个时候,只要我们点击一下那个按钮,把这个元素设置为绝对定位,帧数就可以稳定60。 css3硬件加速(GPU加速) 比起考虑如何减少回流重,我们更期望是,根本不要回流重。...这个时候,css3硬件加速就闪亮登场啦!! 划重点: 1. 使用css3硬件加速,可以让transform、opacity、filters这些动画不会引起回流重 。 2....我通过使用chromePerformance捕获了动画一段时间里回流重情况,实际结果如下图: 添加描述 从图中我们可以看出,在动画进行时候,没有发生任何回流重。...重点 使用css3硬件加速,可以让transform、opacity、filters这些动画不会引起回流重 对于动画其它属性,比如background-color这些,还是会引起回流重,不过它还是可以提升这些动画性能...css3硬件加速坑 当然,任何美好东西都是会有对应代价,过犹不及。css3硬件加速还是有坑: 如果你为太多元素使用css3硬件加速,会导致内存占用较大,会有性能问题。

4.9K50

盒子端 CSS 动画性能提升研究

基于此,对于 Web 动画性能问题,仅仅停留在感觉已经优化OK之上,是不够,想要在盒子端跑出高性能接近 60 FPS 流畅动画,就必须要刨根问底,深挖每一处可以提升方法。...GPU 硬件加速基础之上,更深入去优化 CSS 动画,先给出最后一个优化步骤方案: 精简 DOM ,合理布局 使用 transform 代替 left、top,减少使用耗性能样式 控制频繁动画层级关系...或者 硬件加速 2D Canvas 元素 3D 或透视变换 (perspective、transform) CSS 属性 对自己 opacity 做 CSS 动画或使用一个动画变换元素 拥有加速...此时,层级关系才是我们希望看到,.list 元素没有触发生成 Graphics Layer 。而我们希望需要硬件加速 .swiper 保持在最上方,每次动画过程中只会独立重这部分区域。...GPU 硬件加速,一定要注意元素层级关系,尽量保持让需要进行 CSS 动画元素 z-index 保持在页面最上方。

73560

盒子端 CSS 动画性能提升研究

基于此,对于 Web 动画性能问题,仅仅停留在感觉已经优化OK之上,是不够,想要在盒子端跑出高性能接近 60 FPS 流畅动画,就必须要刨根问底,深挖每一处可以提升方法。...GPU 硬件加速基础之上,更深入去优化 CSS 动画,先给出最后一个优化步骤方案: 精简 DOM ,合理布局 使用 transform 代替 left、top,减少使用耗性能样式 控制频繁动画层级关系...或者 硬件加速 2D Canvas 元素 3D 或透视变换 (perspective、transform) CSS 属性 对自己 opacity 做 CSS 动画或使用一个动画变换元素 拥有加速...此时,层级关系才是我们希望看到,.list 元素没有触发生成 Graphics Layer 。而我们希望需要硬件加速 .swiper 保持在最上方,每次动画过程中只会独立重这部分区域。...GPU 硬件加速,一定要注意元素层级关系,尽量保持让需要进行 CSS 动画元素 z-index 保持在页面最上方。

83360

盒子端 CSS 动画性能提升研究

基于此,对于 Web 动画性能问题,仅仅停留在感觉已经优化OK之上,是不够,想要在盒子端跑出高性能接近 60 FPS 流畅动画,就必须要刨根问底,深挖每一处可以提升方法。...GPU 硬件加速基础之上,更深入去优化 CSS 动画,先给出最后一个优化步骤方案: 精简 DOM ,合理布局 使用 transform 代替 left、top,减少使用耗性能样式 控制频繁动画层级关系...或者 硬件加速 2D Canvas 元素 3D 或透视变换 (perspective、transform) CSS 属性 对自己 opacity 做 CSS 动画或使用一个动画变换元素 拥有加速...而我们希望需要硬件加速 .swiper 保持在最上方,每次动画过程中只会独立重这部分区域。...GPU 硬件加速,一定要注意元素层级关系,尽量保持让需要进行 CSS 动画元素 z-index 保持在页面最上方。

2.2K130

前端动画大乱炖

代码中使用这个API,就是告诉浏览器希望执行一个动画,让浏览器在下一个动画帧安排一次网页重。...: 会把每一帧中所有DOM操作集中起来,在一次重或回流中就完成,并且重或回流时间间隔紧紧跟随显示器刷新频率(60 Hz或者75 Hz); 在隐藏或不可见元素中,将不会进行重或回流,这当然就意味着更少...DEMO传送门 Animation 类似的CSS还提供了一个Animation属性,不过区别于Transition,Animation作用于元素本身而不是样式属性,可以使用关键帧概念,应该说可以实现更自由动画效果...下面主要是介绍SVG中几个用于动画元素,它们分别是: :通常放置到一个SVG图像元素里面,用来定义这个图像元素某个属性动画变化过程; :元素也是放置一个图像元素里面...: WebGL 参考资料 WebGL API 几个常用动画库 Ani.js -- 基于CSS动画生命处理库 Dynamics.js -- 创建具有物理运动效果动画js库 Animate.css

1.1K20

前端-动画大乱炖

代码中使用这个API,就是告诉浏览器希望执行一个动画,让浏览器在下一个动画帧安排一次网页重。...: 会把每一帧中所有DOM操作集中起来,在一次重或回流中就完成,并且重或回流时间间隔紧紧跟随显示器刷新频率(60 Hz或者75 Hz); 在隐藏或不可见元素中,将不会进行重或回流,这当然就意味着更少...f=css3_transition Animation 类似的CSS还提供了一个Animation属性,不过区别于Transition,Animation作用于元素本身而不是样式属性,可以使用关键帧概念...f=css3_animation Canvas 是HTML5新增元素,作为页面图形绘制容器,可用于通过使用JavaScript中脚本来绘制图形。...下面主要是介绍SVG中几个用于动画元素,它们分别是: :通常放置到一个SVG图像元素里面,用来定义这个图像元素某个属性动画变化过程;  :元素也是放置一个图像元素里面

87520

进阶|你css经不住这层考验,就是失败...

经过对比,在盒子端 CSS 动画性能要优于 Javascript 动画,而在 CSS 动画里,使用 GPU 硬件加速动画性能要优于不使用硬件加速性能。...核心代码如下,能近似计算每秒页面帧率,以及我们额外记录一个 allFrameCount,用于记录 rAF 执行次数,用于计算每次动画帧率 : 优化方案设计 所以,我们目标就是在使用 GPU 硬件加速基础之上...对自己 opacity 做 CSS 动画或使用一个动画变换元素 7. 拥有加速 CSS 过滤器元素 8....而我们希望需要硬件加速 .swiper 保持在最上方,每次动画过程中只会独立重这部分区域。...GPU 硬件加速,一定要注意元素层级关系,尽量保持让需要进行 CSS 动画元素 z-index 保持在页面最上方。

62230

reflow和repaint(摘录自张鑫旭翻译)

// zxx: Firefox浏览器相关内容可以看这里;Safari可以看这里。...让我们从一些背景资料开始,当一个元素外观可见性visibility发生改变时候,重(repaint)也随之发生,但是不影响布局。...根据Opera浏览器,重代价是高昂,因为浏览器必须验证DOM树上其他节点元素可见性。而回流更是性能关键因为其变化涉及到部分页面(或是整个页面)布局。...动画效果应用到position属性为absolute或fixed元素动画效果应用到position属性为absolute或fixed元素上,它们不影响其他元素布局,所它他们只会导致重新绘制,而不是一个完整回流...动画元素每次移动3像素可能在非常快机器上看起来平滑度低了,但它不会导致CPU在较慢机器和移动设备中抖动。 避免使用table布局 避免使用table布局。

1.1K40

高性能Web动画和渲染原理系列(5)合成层生成条件和陷阱

: 具有CSS3D属性或CSS透视效果 包含RenderObject节点表示是使用硬件加速视频解码技术HTML5video元素 包含RenderObject节点包含使用了硬件加速Canvas2D...或WebGL技术 使用了CSS透明效果或CSS变形动画 使用了硬件加速CSS Filters技术(有的文献中表示filters属性并没有提升为合成层效果,推测只有一部分filters滤镜效果需要使用硬件加速...隐式合成主要发生在元素出现重叠时,层级较低元素如果被提升为合成层后,最终合成结果就可能出现在原来比自己层级更高元素之上,从而出现错误堆叠关系,为了纠正这种关系,只能让原本层级高(但是并不用提升为合成层元素...Fouber这篇CSS硬件加速也有坑中示例更加详细,子元素引发父元素提升,父元素又引发兄弟元素提升。 三....Document这一层(通常是正常文档流这一层,包含了大量流式布局元素)不断重,从而影响渲染效率,如果能够让动画节点放到单独合成层里,就可以避免这种大规模重,并借助GPU加速合成能力加速整个渲染流程

1.1K10

深入浅出 CSS 动画

CSS 动画用于实现元素从一个 CSS 样式配置转换到另一个 CSS 样式配置。 动画包括两个部分: 描述动画样式规则和用于指定动画开始、结束以及中间点样式关键帧。...当不需要绘制时,复合操作开销可以忽略不计,因此在试着调试渲染性能问题时,首要目标就是要避免层。那么这就给动画性能优化提供了方向,减少元素与回流。...而当元素生成了自己 GraphicsLayer 之后,在动画过程中,Chrome 并不会始终重整个层,它会尝试智能地去重 DOM 中失效部分,也就是发生动画部分,在 Composite 之前,...页面是处于一种分层状态,借助 GPU,浏览器仅仅在每一帧对生成了自己独立 GraphicsLayer 元素层进行重,如此,大大降低了整个页面重排重开销,提升了页面渲染效率。...因此,CSS 动画(Web 动画同理)优化第一条准则就是让需要动画元素生成了自己独立 GraphicsLayer,强制开始 GPU 加速,而我们需要知道是,GPU 加速本质是利用让元素生成了自己独立

1.8K40

【调试】ChromeDevTool高级调式

(能够触发合层CSS 3D透视变换、video、webGL、transform动画、加速CSS滤镜、叠加在已经触发合成层,这些发生在GPU中) 重排与重 网页生成时候,至少会渲染一次。...需要注意是: “重”不一定需要“重排”,比如改变某个网页元素颜色,就只会触发“重”。因为布局没有改变,所以没有触发“重排”。...但是,“重排”必然导致“重”,比如改变一个网页元素位置,就会同时触发“重”和“重排”,因为布局改变了。 ####如何开发不会导致重排?...(1)样式表越简单,重排和重越快;(OOCSS) (2)重排和重DOM元素层级越高,成本越高; (3)table元素重排和重绘成本,要高于div元素; (4)尽量不要把读操作和写操作放在一个语句里面...css3动画(开启gpu加速)

20020

干货 | 携程火车票7个优化动画性能方法

3.2 避免使用影响性能 CSS 属性 这些属性会影响性能,因为它们需要进行复杂计算和渲染,尤其是在动画中使用时。这些属性可能会导致浏览器进行重排和重,从而影响页面的性能和流畅度。...例如,您可以在动画开始前将需要操作元素缓存到变量中,然后在动画中直接使用这些变量,而不是每次都重新查找元素。 另外,还可以使用 CSS3 动画属性来代替 JavaScript 操作 DOM。...然而,这种方法会导致浏览器进行重排和重,从而影响动画性能和流畅度。...我们应该尽力避免使用会触发重布局和重属性,以免失帧。最好提前申明动画,这样能让浏览器提前对动画进行优化。...后续也会在此基础之上对还可提高地方继续加深,后续提供通用解决方案。

17930

【Web动画CSS3 3D 行星运转 && 浏览器渲染原理

承接上一篇:【CSS3进阶】酷炫3D旋转透视 。 最近入坑 Web 动画,所以把自己学习过程记录一下分享给大家。 CSS3 3D 行星运转 demo 页面请戳:Demo。...然后,这个 CSS3 3D 行星运转动画制作过程不再详细赘述,本篇重点放在 Web 动画介绍及性能优化方面。详细 CSS3 3D 可以回看上一篇博客:【CSS3进阶】酷炫3D旋转透视。...然后在制作过程中使用 Sass 编写 CSS 可以减少很多繁琐编写 CSS 动画过程; 3....2D 上下文 元素 混合插件(如 Flash) 对自己 opacity 做 CSS 动画或使用一个动画变换元素 拥有加速 CSS 过滤器元素 元素有一个包含复合层后代节点(...当不需要绘制时,复合操作开销可以忽略不计,因此在试着调试渲染性能问题时,首要目标就是要避免层。那么这就给动画性能优化提供了方向,减少元素与回流。

2.5K70

Web前端知识体系精简

7、动画 Animation Animation首先需要设置一个动画函数,然后以这个动画方式来改变元素css属性之变化,动画可以被设置为永久循环演示。...和transition相比,animation设置动画效果更灵活更丰富,二者还有一个区别是:transition只能通过主动改变元素css值才能触发动画效果,而animation一旦被应用,就开始执行动画...3、重和回流 当渲染树中一部分(或全部)因为元素规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流。...当渲染树中一些元素需要更新属性,而这些属性只是影响元素外观,风格,而不会影响布局,比如background-color。则就叫称为重。...会引起重和回流操作 添加、删除元素(回流+重) 隐藏元素,display:none(回流+重),visibility:hidden(只重,不回流) 移动元素,比如改变top,left,transform

1.3K30

超详细Web 前端知识体系,等你来挑战!

7、动画 Animation Animation首先需要设置一个动画函数,然后以这个动画方式来改变元素css属性之变化,动画可以被设置为永久循环演示。...和transition相比,animation设置动画效果更灵活更丰富,二者还有一个区别是:transition只能通过主动改变元素css值才能触发动画效果,而animation一旦被应用,就开始执行动画...3、重和回流 当渲染树中一部分(或全部)因为元素规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流。...当渲染树中一些元素需要更新属性,而这些属性只是影响元素外观,风格,而不会影响布局,比如background-color。则就叫称为重。...会引起重和回流操作: 添加、删除元素(回流+重) 隐藏元素,display:none(回流+重),visibility:hidden(只重,不回流) 移动元素,比如改变top,left,transform

1.1K70

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

(因为隐藏元素不在render树内,因此修改隐藏元素不会触发回流重) 4.将复杂节点元素脱离文档流,降低回流成本 5.将CSS引入文件放在文件头部,js引入文件放到尾部 6. css3硬件加速...尽可能在DOM树最末端改变class。 避免设置多层内联样式。 将动画效果应用到position属性为absolute或fixed元素上。 避免使用CSS表达式。...具有复杂动画元素使用绝对定位,使它脱离文档流 比起考虑如何减少回流重,我们更期望是,根本不要回流重。这个时候,css3硬件加速就闪亮登场啦!!...划重点:使用css3硬件加速,可以让transform、opacity、filters这些动画不会引起回流重 。...但是对于动画其它属性,比如background-color这些,还是会引起回流重,不过它还是可以提升这些动画性能。

11110
领券