css box-shadow blur 重绘导致动画卡顿
作者:互联网
问题
在开发可拖动切换page的面板(类似安卓viewpager、前端swiper.js)时,发现给元素设置了box-shadow后拖动时和释放后的动画都很卡顿。
通过注释代码发现,是box-shadow 的 blur 属性影响了动画。
原因
究其原因,是拖动元素时,位置的改变引发了图形的重绘。
因为浏览器的图形绘制算法是按照像素定位元素,并基于该位置绘制。当元素位置发生改变,也就引发了图形的重绘
解决发方案
- 在css禁止该组件下的所有额外的图形选项。比如 .selector * {box-shadow: none;filter: none;}
- 在js中通过添加和移选择器,来动态改变其图形选项
.moving * {box-shadow: none;filter: none;}
在 ontouchstart 添加选择器,在ontouchend移除选择器 - 还有更多图形选项,自行添加
标签:box,none,重绘,选择器,blur,shadow,图形,卡顿 来源: https://www.cnblogs.com/chaihuibin/p/16344048.html