gpt4 book ai didi

javascript - 在过渡上使用宽度和变换会导致闪烁

转载 作者:太空狗 更新时间:2023-10-29 16:40:23 26 4
gpt4 key购买 nike

检查这个 JSBIN:http://jsbin.com/hufibisawa/1/edit?css,js,output

启动 Chrome:

  1. 点击测试按钮
  2. 点击test2按钮
  3. 您会看到绿色条闪烁。我想这是因为“translate3d”计算像素的方式与“宽度”不同

当同时使用“left”和“width”属性时,效果很好,但性能不佳。原因是translate3d触发硬件加速,使用亚像素计算,动画效果极其流畅。

这是一个错误吗?可以解决吗?使用 Firefox 效果非常好!那么可能是 Chrome 错误?

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/

关于javascript - 在过渡上使用宽度和变换会导致闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30727638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com