轮播图循环时闪动的原因
在轮播图切换到最后一页时,如果用户切换速度较慢,会出现图片闪动的情况。这是因为使用translate3d移动元素时,当元素移动到页面边缘时,由于浏览器性能优化,会触发复合图层合成,从而导致画面闪烁。
解决方案
为了解决轮播循环时出现的闪动问题,可以采取以下措施:
- 优化changecur方法
重新编写changecur方法,在切换到第一页或最后一页时,先暂停元素过渡,然后立刻更新元素位置,最后恢复元素过渡。
- 使用transform直接实现轮播
可以使用transform属性直接实现轮播,避免使用translate3d导致的复合图层合成问题。
代码示例
changeCur(add){ this.con.style.transitionDuration = '.3s'; //切换cur方法 let cur = this.out.style.getPropertyValue('--cur'); cur = parseInt(cur); if(add){ if (cur === this.num) { this.con.style.transitionDuration = '0s'; this.setCur(0); this.con.offsetWidth; this.con.style.transitionDuration = '.3s'; this.setCur(1); } else { this.setCur(cur + 1); } } else{ if (cur === 1) { this.con.style.transitionDuration = '0s'; this.setCur(this.num + 1); this.con.offsetWidth; this.con.style.transitionDuration = '.3s'; this.setCur(this.num); } else { this.setCur(cur - 1); } } }