css动画

本文探讨了CSS动画的渲染原理和性能优化,强调了使用transform和transition提高性能。内容包括浏览器渲染流程、不同更新样式方法的影响、优化布局、绘制和合成。还详细讲解了transform的四种功能和transition、animation的使用,以及如何创建关键帧动画。
摘要由CSDN通过智能技术生成

例子 将div左右移动

原理

每过段时间(用setInterval做到)

将div移动一小段距离

直到移动到目标点

注意性能

绿色表示重新绘制(repaint)了

css渲染过程依次包含布局,绘制,合成

其中布局和绘制有可能被省略

在这里插入图片描述

第2种方式

前端高手不用left做动画,用transform(变形),性能会好很多

原理

transform:translateX(0=>300px)

直接修改会被合成,需要等一会修改

transition过渡属性可以自动脑补中间帧

注意性能

并没有repaint重新绘制

比改left性能好

使用transform让浏览器渲染次数变少了,性能好

浏览器渲染原理

查看浏览器渲染

开发者工具,选中任意一个tab,按esc键,勾选Paint flashing。

刷新页面,绿色出现的次数,就是浏览器渲染的次数

浏览器渲染过程

根据HTML构建HTML树(DOM)

根据CSS构建CSS树(CSSOM)

将两棵树合并成一颗渲染树

Layout布局(文档流,盒模型,计算大小和位置)

Paint绘制(把边框颜色,文字颜色,阴影等画出来)

Compose合成(根据层叠关系展示画面)

如何更新样式

一般用JS来更新样式

比如div.style.background=‘red’
比如div.style.display=‘none’
比如div.classList.add(‘red’)
加类比加样式更好!高手都是加类更快,新手才加style。工作中也是直接加类

比如div.remove()直接删掉节点

这些方法有什么不同吗?

用js更新样式有3种不同的渲染更新方式

在这里插入图片描述

第一种,全走

<body>[removed][removed] <div class='progress'>   <div class='progress_inner'>     <div class='progress_inner__step'>       <label for='step-1'>Start order</label>     </div>     <div class='progress_inner__step'>       <label for='step-2'>Prepare gift</label>     </div>     <div class='progress_inner__step'>       <label for='step-3'>Pack gift</label>     </div>     <div class='progress_inner__step'>       <label for='step-4'>Decorate box</label>     </div>     <div class='progress_inner__step'>       <label for='step-5'>Send gift</label>     </div>     <input checked='checked' id='step-1' name='step' type='radio'>     <input id='step-2' name='step' type='radio'>     <input id='step-3' name='step' type='radio'>     <input id='step-4' name='step' type='radio'>     <input id='step-5' name='step' type='radio'>     <div class='progress_inner__bar'></div>     <div class='progress_inner__bar--set'></div>     <div class='progress_inner__tabs'>       <div class='tab tab-0'>         <h1>Start order</h1>         <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tortor ipsum, eleifend vitae massa non, dignissim finibus eros. Maecenas non eros tristique nisl maximus sollicitudin.</p>       </div>       <div class='tab tab-1'>         <h1>Prepare gift</h1>         <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tortor ipsum, eleifend vitae massa non, dignissim finibus eros. Maecenas non eros tristique nisl maximus sollicitudin.</p>       </div>       <div class='tab tab-2'>         <h1>Pack gift</h1>         <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tortor ipsum, eleifend vitae massa non, dignissim finibus eros. Maecenas non eros tristique nisl maximus sollicitudin.</p>       </div>       <div class='tab tab-3'>         <h1>Decorate box</h1>         <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tortor ipsum, eleifend vitae massa non, dignissim finibus eros. Maecenas non eros tristique nisl maximus sollicitudin.</p>       </div>       <div class='tab tab-4'>         <h1>Send gift</h1>         <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tortor ipsum, eleifend vitae massa non, dignissim finibus eros. Maecenas non eros tristique nisl maximus sollicitudin.</p>       </div>     </div>     <div class='progress_inner__status'>       <div class='box_base'></div>       <div class='box_lid'></div>       <div class='box_ribbon'></div>       <div class='box_bow'>         <div class='box_bow__left'></div>         <div class='box_bow__right'></div>       </div>       <div class='box_item'></div>       <div class='box_tag'></div>       <div class='box_string'></div>     </div>   </div> </div> <div 0; font:normal 14px/24px 'MicroSoft YaHei';">  </div> </body> CSS3步骤流程查看动画特效是一款分为5个步骤的查看商品订单流程代码,简洁又好看,推荐下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老老老老李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值