Автор оригинала: Lorenzo De Nobili.
Если вы строите современный веб-сайт или мобильное приложение, Вам, безусловно, нужно оживить некоторые элементы вашего пользовательского интерфейса Отказ На самом деле, я хочу быть еще более радикальным, Вы должны сделать это Отказ
Почему? Причина очень проста: вы хотите иметь некоторую анимацию, потому что они являются необычайным мощным инструментом, который позволяет вам дать Чувство скорости и современность к вашему интерфейсу. Анимации позволяют вам Сосредоточьте внимание ваших пользователей К определенной части вашего приложения, и, конечно же, делает ваш UI более привлекательным.
Хорошо, теперь, когда мы достигли соглашения, что вам нужно добавить некоторые анимации, давайте посмотрим, как вы можете их реализовать.
Составю это, если вы новичок в анимации, ваша первая мысль – использовать jquery (Или, если вы чувствуете себя смелым, ванильным js. Я имею в виду, что он имеет полное смысл – jQuery имеет метод, называемый анимацией, и это очень просто и легко в использовании. Но, извините, это не тот ответ!
Прежде чем дать вам «правильный» ответ, я хочу немного глубже в методе анимации jQuery, и обсудите, как это работает и почему это не идеально.
Анатомия .Немата ()
Прежде всего, давайте посмотрим на интерфейс метода:
animate( properties [, duration ] [, easing ] [, complete ] )
Как видите, есть много вариантов, которые позволяют настроить вашу анимацию. В первом аргументе метод имеет объект с помощью свойства ключей, который вы хотите анимировать и в качестве значения (новое значение свойства CSS). Все остальные аргументы являются необязательными – они позволяют устанавливать Продолжительность анимации (в миллисекундах), Тип ослабления и а Обратный вызов Функция, которая будет выполнена в конце анимации. Как я уже говорил ранее: Очень легко и просто Отказ
Но что такое метод делает, именно? Мы можем легко понять это, проверяя элемент DOM, анимированный с помощью jQuery.
Как видите, jQuery просто меняет значение свойств элемента. Это очень медленно, потому что каждое изменение приводит к тому, что браузер перекрашивает события (и другие очень плохие и медленные вещи). Эти операции, вероятно, являются наиболее интенсивными операциями, которые могут выполняться браузер:
Анимация CSS к спасению!
Есть гораздо более мощная альтернатива: CSS анимации Отказ
Использовать анимацию CSS, у нас есть Два варианта : Мы можем использовать Преобразовать свойство или создать ключевой кадр Отказ Эти два варианта ведут себя точно так же; Единственное различие в коде и разном уровне настройки. Давайте перестанем говорить и посмотреть какой-нибудь код!
CSS Transform
Свойство преобразования очень мощное, простое в использовании и позволяет применить некоторые простые преобразования к вашим элементам. Некоторые примеры являются масштаб , Перевести и вращать Отказ
Как мы это используем? Очень просто! Если вы хотите переместить элемент 50 пикселей вправо, все, что вам нужно сделать, это добавить следующие свойства в свой элемент:
transform: translate3d(50px, 0, 0);
translate3d
является одним из многочисленных функций преобразования, и это интерфейс: translate3d (x, y, z)
CSS KeyFrame.
С помощью ключевых кадров у нас больше контроля. На самом деле, Мы можем настроить практически каждый шаг нашей анимации Отказ Посмотрите на код ниже:
@keyframes my-cool-animation { 0% { bottom: 0; left: 0; } 33% { bottom: 20px; left: 20px; } 66% { bottom: 300px; left: 300px; } 100% { bottom: 320px; left: 320px; } }
Да, с ключевыми кадрами мы можем указать значение для каждого шага! Таким образом, не только мы создаем пользовательскую анимацию, но и пользовательское облегчение!
Теперь, когда мы имеем правило нашего ключевого кадра, мы должны назначить это правило элементу:
#div.my-animated-element { animation: my-cool-animation; }
И это все!
Установка параметров анимации
Извините, я был вроде лжи, это не все … пока. Нам все еще нужно добавить еще код, чтобы создать нашу анимацию. На самом деле, если вы попытаетесь добавить вышеуказанные фрагменты на свои стилы, вы увидите, что элементы имеют новые позиции, но без модных анимаций 😔
Хорошая новость в том, что я собираюсь научить вас, как это исправить!
- Если вы используете Преобразовать свойство Вам понадобится это:
transition:all 2s ease-in-out;
С этой строкой кода вы можете установить свойство, которое вы хотите анимировать, синхронизацию и ослабление (как обычно для CSS, вы также можете установить это значения независимо с использованием расширенной версии).
- Если вы используете ключевые кадры , вы захотите добавить этот код:
animation: my-cool-animation 5s infinite;
Здесь мы устанавливаем имя анимации (как мы ранее сделали), время, и количество раз, когда анимации должны повторяться.
Секрет анимации CSS
Если вы все еще читаете, вы, вероятно, задаетесь вопросом, почему анимации CSS лучше.
Правда в том, что Анимация CSS быстрее, потому что они находятся в родом в браузере , который обрабатывает анимацию сильно оптимизированным! Извините, если вы ждали отличного откровения, иногда правда так просто!
Сделать наши анимации когда-либо гладкими
До того, как я закрываю, есть небольшой трюк, который я хочу поделиться с вами. Для супер тяжелых анимаций мы можем заставить браузер рендерировать их Использование ускорения GPU ! Делая это, мы можем использовать дополнительную силу нашего графического процессора, чтобы сделать некоторые тяжелые вычисления, давая CPU немного отдыха и привести к более широкому и более прекрасным анимациям.
Ускорение GPU по умолчанию включено для некоторых свойств – один из них translate3d
Отказ Просто добавьте translate3d (0, 0, 0)
К элементам, которые мы хотим рендерировать, и вся тяжелая работа будет обрабатываться он GPU! Спасибо, приятель!
Имейте в виду, Ускорение графического процессора может быть интенсивной памятью, а также может потребовать много энергии Особенно на мобильных устройствах. Итак, Используйте это ответственно Отказ
Упаковывать его вверх
Я надеюсь, что в следующий раз вы добавляете анимацию, вы выберете нужный инструмент. Я не говоря, что jQuery анимация ()
это зло , что я говорю, это то, что это может быть злой Иногда, особенно если у вас есть много анимаций, и если ваш сайт ориентирован на мобильный (и должен!).
Это GIF для меня jQuery Animate () и выбирая анимацию CSS ()