在过渡中使用宽度和变换会导致闪烁
Using width and transform on transition causes flickering
查看此JSBIN: http://jsbin.com/hufibisawa/1/edit?css,js,output
启动Chrome:
- 点击测试按钮 点击test2按钮
- 您将看到绿色条闪烁。我想这是因为"translate3d"不计算其像素相同的方式"宽度"做
当同时使用"left"answers"width"属性时,效果很好,但性能不佳。原因是translate3d触发HW加速并使用亚像素计算,这提供了一个非常平滑的动画。
是bug吗?是可解的吗?使用Firefox,这工作得非常好!所以可能是Chrome浏览器的bug?
css#test {
position: absolute;
transition: transform 1s ease-out, width 1s ease-out;
left: 0;
top: 0;
transform: translate3d(0, 0, 0);
width: 300px;
height: 25px;
background-color: red;
}
#test2 {
position: absolute;
transition: transform 1s ease-out, width 1s ease-out;
left: 0;
transform: translate3d(0, 25px, 0);
top: 0;
width: 300px;
height: 25px;
background-color: green;
}
和JS
document.querySelector('#button').addEventListener('click', function () {
var el = document.querySelector('#test');
el.style.width = '150px';
el.style.transform = 'translate3d(0px, 0px, 0)';
var el = document.querySelector('#test2');
el.style.width = '150px';
el.style.transform = 'translate3d(150px, 0px, 0)';
});
document.querySelector('#button2').addEventListener('click', function () {
var el = document.querySelector('#test');
el.style.width = '300px';
el.style.transform = 'translate3d(0px, 0px, 0)';
var el = document.querySelector('#test2');
el.style.width = '300px';
el.style.transform = 'translate3d(0, 25px, 0)';
});
您可以通过从右侧而不是从左侧移动绿色框来解决这个问题。例如http://jsbin.com/ximigitawe/1/
相关文章:
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 使用jQuery以红色和黑色闪烁文本
- 我的Tizen应用程序在点击时会闪烁
- IE6在启用/禁用文本字段上闪烁
- .scroll()函数在上次更新后在谷歌chrome中定位闪烁
- 页面加载之间闪烁
- 创建闪烁“;文本“;在javascript中
- 如何使用按键避免图像闪烁
- 使用KineticJS变换(移动/缩放/旋转)形状
- 使用setInterval()函数进行图像闪烁
- 1种颜色的Javascript闪烁文本更长
- 布料模拟+图像上的画布变换
- addClass,它更改bg图像,但在第一次加载时没有闪烁
- reactjs重新渲染时画布闪烁
- d3用时钟中的两个指针变换原点
- iframe覆盖onclick变换
- 如何使用拉斐尔自由变换翻转图像
- 悬停时setInterval中的图像闪烁
- javascript样式的背景颜色在设置时闪烁.ASP.NET
- 在过渡中使用宽度和变换会导致闪烁