Safari 12 css-анимация не работает

Я пытаюсь анимировать список элементов, которые будут вставляться один за другим при отображении на странице.

Все работает хорошо в Chrome и Firefox, даже в Safari 11 работает хорошо, но safari 12 плохо справляется с анимацией.

Как показано на следующем изображении, все элементы должны быть выровнены по верхнему краю после завершения анимации, но по какой-то причине только в Safari 12 элементы отображаются случайным образом. Кроме того, наведение указателя мыши на кнопку выключено.

Safari 12 css-анимация не работает

Вы можете взглянуть на проблему здесь: 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();  
  });
});

Обновлено:

Я исправил проблему: Оказывается, все, что мне нужно было сделать, это удалить transform: translateY(60px); из slide-in. Очевидно, сафари использовал этот стиль в конце анимации, перезаписывая окончательное значение. Это очень странно, потому что визуально выглядит неправильно, но активные зоны и все в порядке.

Привет, @Crysfel, вы нашли решение этой проблемы? В настоящее время тоже пытаюсь это исправить.

JVK 04.02.2019 21:35

Да!! Оказывается, все, что мне нужно было сделать, это удалить transform: translateY(60px); из slide-in. Очевидно, сафари использовал этот стиль в конце анимации, перезаписывая окончательное значение. Это очень странно, потому что визуально выглядит неправильно, но активные зоны и все в порядке.

Crysfel 05.02.2019 17:31

Потрясающие!! Спасибо @Crysfel, что исправил мою проблему.

JVK 06.02.2019 22:28

Это действительно странное исправление, потому что в animation-fill-mode: forwards должен был применяться стиль от вашего до в конце анимации ... Интересно, есть ли в Safari 12 проблема с режимом анимации-заливки?

tsmuse 15.03.2019 21:13

Правильно, должно! И он применяет правильные стили в Chrome, Firefox и даже Safari 11. Это ошибка только в Safary 12.

Crysfel 18.03.2019 18:34

Да, это определенно ошибка Safari. Предполагается, что окончательные стили анимации должны оставаться в силе, это своего рода важный компонент их работы. Я действительно очень удивлен, что они выпустили эту регрессию.

dudewad 05.06.2019 21:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
6
4 128
1

Ответы 1

Возможно, вам понадобится добавить префикс к ключевым кадрам и анимации для сафари. Используйте что-то вроде этого:

@keyframes slideIn {
  from {
    opacity: 0;
    transform: translateY(60px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@-webkit-keyframes slideIn {
  from {
    opacity: 0;
    -webkit-transform: translateY(60px);
  }
  to {
    opacity: 1;
    -webkit-transform: translateY(0);
  }
}
.slide-in {
  opacity:0;
  transform: translateY(60px);
  -webkit-transform: translateY(60px);
  animation: slideIn ease 1;
  -webskit-animation: slideIn ease 1;
  animation-fill-mode: forwards;
  -webkit-animation-fill-mode: forwards;
  animation-duration: 175ms;
  -webkit-animation-duration: 175ms;
} 

Полезный инструмент - shouldiprefix.com

Спасибо! Но Safari 12 уже поддерживает все приведенные выше css, проблема в другом :(

Crysfel 09.11.2018 20:16

Другие вопросы по теме