Ваше здоровье! У меня возникла проблема с отладкой определенного поведения, которое происходит в основном в браузере Chrome. Вот упрощенный пример: https://jsfiddle.net/pd3xb2uo/
Цель состоит в том, чтобы одновременно передавать несколько элементов с помощью кода JS. В примере, когда вы нажимаете на кнопку, элементы перемещаются влево с помощью translate3d
, добавленного через JS. Работает нормально, но есть нюансы:
Вот скриншоты обоих случаев:
Любая помощь или идеи о том, почему это происходит, будут высоко оценены :) Похоже, что есть задержка в несколько миллисекунд, прежде чем атрибут стиля будет обновлен для определенных элементов, но я понятия не имею, почему:/
Проблема возникает из-за одновременного перехода 100 элементов и из-за переходов в полпикселя.
Если вы знаете, какой ширины и сколько у вас элементов, то вы можете сделать это так:
const container = document.querySelector('.container-inner');
for (let i = 1; i < 100; i++) {
const div = document.createElement('div');
div.classList.add('element');
div.textContent = `Element ${i}`;
container.appendChild(div);
}
let transition = 0;
document.querySelector('button').addEventListener('click', () => {
transition -= 100;
container.style.transform = `translateX(${transition}px)`;
});
.container{
width: 100%;
overflow: hidden;
}
.container-inner{
display: flex;
flex-direction: row;
transition: transform .3s;
}
.element {
width: 100px;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
padding: 2rem;
text-align: center;
transition: transform .3s;
background-color: #A67583;
}
<button>Move</button>
<div class = "container">
<div class = "container-inner"></div>
</div>
Теперь только один элемент получает переход, и он работает без сбоев.
Ваше здоровье! Спасибо за объяснение и пример! Заценил!