Я пытаюсь анимировать список элементов, чтобы скользить один за другим при визуализации на странице.
В Chrome и Firefox все работает хорошо, даже в Safari 11 работает хорошо, но в Safari 12 анимация работает плохо.
Как показано на следующем рисунке, все элементы должны быть выровнены по верху после завершения анимации, но по какой-то причине только в Safari 12 элементы отображаются случайным образом. Кроме того, мышь над кнопкой выключена
Вы можете посмотреть на проблему здесь: https://codepen.io/crysfel/pen/GwoQxE (Обязательно откройте ссылку с помощью safari 12)
Мне кажется, что CSS довольно стандартен:
@keyframes slideIn {
from {
opacity: 0;
transform: translateY(60px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.slide-in {
opacity:0;
transform: translateY(60px);
animation: slideIn ease 1;
animation-fill-mode: forwards;
animation-duration: 175ms;
}
И простой javascript для анимации предметов один за другим:
function animateIn() {
$('ul li').each(function(index) {
$(this).removeClass('slide-in');
setTimeout(() => {
$(this).addClass('slide-in');
}, 50 * index)
})
}
$(() => {
animateIn();
$('#show').click(function() {
animateIn();
});
});
EDIT:
Я исправил проблему : Оказывается, все, что мне нужно было сделать, это удалить transform: translateY(60px);
из slide-in
. Видимо, сафари использовал этот стиль в конце анимации, перезаписывая окончательное значение. Это очень странно, потому что визуально выглядит неправильно, но с активными зонами все в порядке.