Статьи

CSS3 анимации 101: что такое анимация?

Если вы следите за моей недавней серией о переходах CSS3 , вы поймете, что это анимированный эффект между начальным и конечным состоянием, которое запускается триггером, таким как CSS: hover или событие JavaScript.

В этой серии мы рассмотрим анимацию CSS3. Они разделяют многие из тех же понятий, что и переходы, но гораздо более гибки, если их немного сложнее использовать.

Это первая из четырех статей о CSS3-анимациях, но каждую статью можно читать по отдельности или не по порядку. Наш начальный вопрос …

Чем анимация отличается от переходов?

Есть ряд критических отличий:

  1. Подобно переходам, анимация может определять начальное и конечное состояние, но она также может указывать любое количество промежуточных состояний для создания более сложных эффектов.
  2. Анимация может запускаться как переход, но она также может запускаться без запуска, например, сразу после загрузки страницы
  3. В то время как переход будет реагировать только тогда, когда триггер активирован или деактивирован, анимация может зацикливаться конечное или бесконечное число раз
  4. Цикл анимации может воспроизводиться вперед, назад или попеременно между ними.
  5. Анимационный CSS более многословен и труден для написания … но он, несомненно, проще, чем сопоставимый код JavaScript.

Есть те, кто утверждает, что анимации должны обрабатываться JavaScript, потому что они поведенческие. Они не. Браузер выполняет только анимацию кадров между состояниями; он генерирует недостающие кадры анимации, поэтому вам не нужно. Если вы хотите добавить сложную интерактивность или контроль столкновений, вам все равно понадобится JavaScript.

Преимущества CSS3-анимации такие же, как и у переходов: их легко создавать, а сложные сложные эффекты обрабатываются браузером, а не вашим кодом.

Как вы определяете анимацию?

Анимация определяется с помощью:

Keyframes
«Ключевые кадры» — это термин, который вы, возможно, слышали в отношении редактирования видео. Один ключевой кадр определяет точку во время анимации, где указывается известное состояние, например

  • при завершении 0% цвет фона синий
  • при завершении 50% цвет фона зеленый
  • на 100%, цвет фона красный

Вы не заботитесь обо всех цветах между синим и зеленым или зеленым и красным; браузер определит их.

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

Свойства анимации
Ключевые кадры применяются к элементам с использованием ряда свойств, которые определяют имя, продолжительность, функции синхронизации и повторяющиеся параметры.

Какие свойства CSS можно анимировать?

Подобно переходам CSS3 , вы можете анимировать свойства CSS только с дискретными значениями, которые меняются между ключевыми кадрами. Сюда входят свойства макета (ширина, высота, отступы, поля, границы), позиционные свойства (слева, справа, сверху, снизу), преобразования, размеры шрифта, цвета, цвета фона и прозрачность.

Свойства, которые используют значение ключевого слова, например display: none; , visibility: hidden; или height: auto; не может быть анимировано. Обратитесь к CSS3 Transition Property Basics для более подробного объяснения и некоторых обходных путей.

Поддержка кросс-браузерной анимации

CSS3 анимация поддерживается в Firefox, IE10 и Opera 12 без префикса. На момент написания статьи браузерам Webkit, включая Chrome, Safari и Opera 15+, требовался префикс -webkit- во всех определениях ключевых кадров и свойств. IE9 и ниже не поддерживают анимацию.

Это еще не все — откройте эту ссылку в различных браузерах:
Посмотреть демонстрационную страницу CSS3 …

Firefox, IE10 и Opera 12 работают отлично. Chrome и Opera 15 не могут изменить радиус границы и цвет фона. По моему опыту:

  • Firefox, как правило, является браузером с лучшим поведением и реализует анимацию, как вы ожидаете.
  • IE10 в целом хорош, но иногда не показывает некоторые незначительные эффекты, такие как тени от ящиков.
  • Opera 12 хорошо применяет большинство эффектов, но часто ошибается.
  • Браузеры webkit являются странными (и требуют префикса, который удваивает количество кода, которое вам нужно). В этом примере webkit отказывается от некоторых свойств CSS, потому что есть преобразование вращения. Это урок для любого разработчика, который думает, что webkit идеален и должен быть единственным браузерным движком!

К счастью, различия редко имеют значение. Если анимация CSS3 в некотором отношении дает сбой, в конечном итоге должны быть достигнуты начальное и конечное состояния. В худшем случае никакой анимации не будет, но она никогда не должна быть критичной для отображения контента.

В следующей части мы определим ключевые кадры и свойства анимации.