Я анимировал element.style.left
в Windows Chrome
Когда я использую requestAnimationFrame
для анимации element.style.left
абсолютного <div>
, анимация не выглядит плавной в версии Google Chrome77.0.3865.90 (Официальная сборка) (64-разрядная версия) в Windows 10.
Передний край анимированного элемента мерцает и выглядит ужасно
Передний край div, кажется, исчезает / мерцаетпока он движетсяКогда он движется в другом направлении, другой край исчезает / мерцает.
В Firefox и Microsoft Edge и в моем мобильном Chrome анимациясглаживание без мерцания.
Полный пример кода для демонстрации проблемы
Я написал простую демонстрацию, которая отображает div из стороны в сторону и показывает проблему.
const element = document.getElementById('example')
var left = 20
var increment = 2
function animationStep(timestamp) {
if (left < 20 || left > 200) {
increment = -increment
}
left += increment
element.style.left = (left + 'px')
window.requestAnimationFrame(animationStep)
}
window.requestAnimationFrame(animationStep)
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Example</title>
<style>
body {
margin: 0;
background-color: #f0f0f0;
}
#example {
background-color: #fff;
font-family: Arial;
font-size: 15px;
top: 50px;
padding: 6px;
border: 1px solid black;
position: absolute;
border-radius: 5px;
}
</style>
</head>
<body>
<div id="example">Example</div>
<script>
// ...as below
</script>
</body>
</html>
Я что-то не так делаю?
Кто-нибудь знает, что происходит с Chrome в Windows 10?Что-то не так с моим кодом?Если нет, есть ли хорошие рабочие места, чтобы остановить мерцание?Единственное, о чем я могу подумать, это поместить свой div внутри большего div с невидимым фоном.По разным причинам я не хочу использовать CSS-анимацию.