分享更有价值
被信任是一种快乐

CSS阴影动画优化的方法

文章页正文上

这篇文章主要介绍了CSS阴影动画优化的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS阴影动画优化的方法文章都会有所收获,下面我们一起来看看吧。
  box-shaodw 在我们的工作中使用以及越来越多,伴随阴影的动画或多或少都有一点。假设,我们有下面这样一个盒子:
  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 进行动画性能更好呢?可以看看这里这张表格,列举了不同属性变换对页面重排、重绘的影响:
  存在的问题,另外一种方案
  原文中上述这个方案其实并不算太完美,因为最终的效果是两个阴影的叠加效果,可能会在整体的感觉上阴影颜色更深了一点。
  所以需要对最终状态的阴影进行微调一下,削弱一点效果,尽量让两个阴影的叠加效果与单一一个阴影效果相近。
  当然,我们可以再对上述方案进行优化,我们再使用一个 ::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;
  }关于“CSS阴影动画优化的方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“CSS阴影动画优化的方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注云技术行业资讯频道。

相关推荐: FlashFXP是什么

这篇文章主要讲解了“FlashFXP是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“FlashFXP是什么”吧! FTP 是File Transfer Protocol(文件传输和谈)的英文简称,而中文简喻…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册