首页 > 作文

CSS 阴影动画优化技巧一则

更新时间:2023-04-07 06:11:32 阅读: 评论:0

本技巧来自这篇文章 —how to animate box-shadow with silky smooth performance

本文不是直译,因为觉得这个技巧很有意思很有用,遂起一文。

box-shadow在我们的工作中使用以及越来越多,伴随阴影的动画或多或少都有一点。假设,我们有下面这样一个盒子:

div {    width: 100px;    height: 100px;    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);}

希望 hover 的时候,盒阴影从名家议论文box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3)过渡到box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3)

box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3)–>box-shadow: 0 5px 15px rgba(0方向的英语, 0, 0, 0.3)

ok,最简单的方法当然是:

div:hover {    width: 100px;    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);}

因为过渡动画是在两个不同的盒阴影状态在发生,所以在过渡动画的时间内,浏览器会不断的重绘盒阴影。而又由于阴影属于耗性能样式,所以这种动画给人的感觉多少有些卡顿。

这里有一个小技巧可以优化这种情况下的阴影动画。

使用伪元素及透明度进行优化

使用伪元素及透明度进行优化,我们给上述元素添加一个 before 伪元素,大小与父 div 一致,并且提前给这个元素添加好所需要的最终的盒阴影状态,但是元素的透明度为 0。

div {    position: relative;    width: 100px;    height: 100px;    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);}div::before {    content: "";    position: absolute;    top: 0;    left: 0;    width: 100%;    height: 100%;    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);    opacity: 0;}

然后,在 hover 的时候,我们只需要将伪元素的透明度从 0 设置为 1 即可。

div:hover::before {    opacity: 1;}

这样做的好处是,实际在进行的阴影变化,其实只是透明度的变化,而没有对阴影进行不断的重绘,有效的提升了阴影动画的流畅程度,让它看起来更加丝滑。

为什么对透明度opacity进行动画要比对box-shadow进行动画性能更好呢?可以看看这里这张表格,列举了不同属性变换对页面重排、重绘的影响:

very few css properties

最后,demo 可以看看:

codepen demo — 优化box-shadow动画

存在的问题,另外一种方案

原文中上述这个方案其实并不算太完美,因为最终的效果是两个阴影的叠加效果,可能会在整体的感觉上阴影颜色更深了一点。

所以需要校园绿化设计方案对最终状态的阴影进行微调一下,削弱一点效果,尽量让两个阴影的叠加效果与单一一个阴影效果相近。

当然,我们可以再对上述方案进行优化,我们再使用一个::after伪元素,::after伪元素设置为初始状态且透明度为1,::before伪元素设置为末尾状态且透明度为0:

div {    position: relative;    width: 100px;    height: 100px;}div::before {    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);    opacity: 0;}div::after {    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);}

实际 hover 的时候,对两个伪元素进行一显一隐,这样最终的效果只有一个阴影效果,没有阴影的叠齐如山加,与直接对阴影进英语书行过渡变化效果一致:

div:hover::before {    opacity: 1;}div:hover::after {    opacity: 0;}

codepen demo — 优化box-shadow动画

最后

好了,本文到此结束,希望对你有帮助

本文发布于:2023-04-07 06:11:30,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/2e295803b0822689000b76bdf88f514e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:CSS 阴影动画优化技巧一则.doc

本文 PDF 下载地址:CSS 阴影动画优化技巧一则.pdf

上一篇:PHP反射API
下一篇:返回列表
标签:阴影   透明度   元素   动画
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图