Анимация HTML+CSS
Статья №14
Сергей Веснин,
WhatsApp: +79954088858
Мы регулярно выпускаем такие полезные статьи. Подпишитесь на наш Телеграм-канал, чтобы получать оповещения о новых публикациях.
Задача
Анимировать картинку. На картинке электростанция и нам хочется, чтобы у нас на сайте была анимация, показывающая анатомию конструкции.
Решение
Готовим необходимое количество картинок. С помощью правила @keyframes описываем анимацию блока с картинкой. Механизм простейший: меняем background нашего div, при желании можно нарисовать мультик.
Пример
<html> <head> <style type="text/css"> #rasschet-inner{ position:absolute;width:200px;height:245px;top:0px;left:0px; background:url('http://tepsystem.ru/templates/tepsystem-main/images/rasschet.png') center top no-repeat; transition:all 150ms ease-in-out 20ms; -webkit-transition:all 150ms ease-in-out 20ms; -moz-transition:all 150ms ease-in-out 20ms; -o-transition:all 150ms ease-in-out 20ms; -ms-transition:all 150ms ease-in-out 20ms; } #rasschet-inner { -webkit-animation-direction:normal; -webkit-animation-timing-function: linear; -webkit-animation-iteration-count: infinite; -webkit-animation-name: movement; -webkit-animation-duration: 3s; animation-direction:normal; animation-timing-function: linear; animation-iteration-count: infinite; animation-name: movement; animation-duration: 3s; } @-webkit-keyframes movement { from { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an0.png') center top no-repeat; } 15% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an0. png') center top no-repeat; } 30% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an2.png') center top no-repeat; } 45% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an3.png') center top no-repeat; } 60% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an4.png') center top no-repeat; } 75% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an1.png') center top no-repeat; } to { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an1.png') center top no-repeat; } } @keyframes movement { from { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an0.png') center top no-repeat; } 15% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an0.png') center top no-repeat; } 30% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an2.png') center top no-repeat; } 45% { background:url('http://tepsystem. ru/templates/tepsystem-main/images/an3.png') center top no-repeat; } 60% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an4.png') center top no-repeat; } 75% { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an1.png') center top no-repeat; } to { background:url('http://tepsystem.ru/templates/tepsystem-main/images/an1.png') center top no-repeat; } } </style> </head> <body> <div></div> </body> </html>
\n’ + ‘ \n’ + ‘ \n’ + ‘ \n’ + ‘ \n’ + ‘ \n’ + ‘ \n’ + ‘
Анимация средствами CSS и HTML
Для создания анимации по кадрам используется описание кадров с помощью @keyframes
. Данное свойство — это контейнер, куда пользователь прописывает изменения в кадрах с стилях CSS. Браузер вычисляет разницу в стилях и на этом строит анимацию, плавно изменяя значение свойств в заданных пределах.
@keyframes y1 { 0% { margin-left: 5px; } 100% { margin-left: 100px; } }
1 2 3 4 5 6 7 8 |
@keyframes y1 { 0% { margin-left: 5px; } 100% { margin-left: 100px; } } |
При данном коде в начале анимации элементу будет присвоен стиль margin-left: 5px, а конечным значением будет margin-left: 100px.
Для того, чтобы анимация сработала, необходимо название анимации добавить тому элементу, который требует анимации. Существует две формы записи анимации, сокращенная:
.one { animation: y1 4s 3; }
.one { animation: y1 4s 3; } |
здесь
- animation— ключевое слово
- y1 — название анимации
- 4s — продолжительность анимации( 4 секунды)
- 3 — количество повторений
Полная форма записи анимации выглядит так:
. one { animation-name: y1; animation-duration: 4s; animation-iteration-count: 3 }
.one { animation-name: y1; animation-duration: 4s; animation-iteration-count: 3 } |
Как вы догадались, анимировать будем элементы, которым присвоен класс .one
.
Параметры анимации
Рассмотрим значения параметров анимации поподробнее:
- @keyframes — блок, в который записывается раскадровка анимации.
- animation — свойство, которое позволяет в сокращенной форме записывать параметры анимации.
- animation-name — имя блока @keyframes анимации
- animation-duration — длительность анимации в секундах.
- animation-timing-function — функция изменения параметров. По умолчанию имеет значение ease.
- animation-delay — временная задержка перед выполнением анимации.
- animation-iteration-count — количество циклов анимации, которые будут проиграны. Если установить infinite — то анимация будет бесконечной.
- animation-direction — направление анимации. Можно задавать alternate направления для четных и нечетных итераций будет отличаться. По умолчанию стоит значение normal.
О раскадровке
С помощью директивы @keyframes можно задавать подробную раскадровку анимации:
@keyframes y1 { 0% { margin-left: 5px; } 2% { } 67% { } 100% { margin-left: 100px; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@keyframes y1 { 0% { margin-left: 5px;} 2% {
} 67% {
} 100% { margin-left: 100px; } } |
или использовать сокращенную запись, которая указывает начальную точку анимации: from и конечную to
@keyframes y1 { from{ margin-left: 5px; } to{ margin-left: 100px; } }
1 2 3 4 5 6 7 8 |
@keyframes y1 { from{ margin-left: 5px; } to{ margin-left: 100px; } } |
animation-timing-function
Скорость изменения параметров, которые можно задать:
- linear — скорость изменений одинакова на всем протяжении анимации
- ease — значение по умолчанию.
- ease-in — анимация с медленным изменением параметров в начале работы.
- ease-out — анимация с медленным изменением параметров на финише.
- ease-in-out— медленный старт и окончание анимации.
- cubic-bezier(n,n,n,n) — задание своих значений кривой изменения скорости. Параметр n — число от 0 до 1.
- initial — установить значение по умолчанию
- inherit — наследовать функцию от родителя.
Анимацию можно строить и без применения свойства animation. Часто для анимации используют псевдоклассы.
анимация | CSS-трюки — CSS-трюки
DigitalOcean предоставляет облачные продукты для каждого этапа вашего путешествия. Начните с бесплатного кредита в размере 200 долларов США!
Свойство animation
в CSS может использоваться для анимации многих других свойств CSS, таких как color
, background-color
, height
или width
. Каждая анимация должна быть определена с помощью at-правила @keyframes
, которое затем вызывается с помощью анимации 9.0006 свойство, например:
.element { анимация: импульс 5с бесконечный; } пульс @keyframes { 0% { цвет фона: #001F3F; } 100% { цвет фона: #FF4136; } }
Каждое @keyframes
at-правило определяет, что должно происходить в определенные моменты во время анимации. Например, 0% — это начало анимации, а 100% — конец. Затем этими ключевыми кадрами можно управлять либо с помощью сокращенного свойства анимации
, либо с помощью его восьми подсвойств, чтобы обеспечить больший контроль над тем, как следует манипулировать этими ключевыми кадрами.
Подсвойства
-
имя-анимации
: объявляет имя@keyframes
at-правила для управления. -
animation-duration
: время, за которое анимация завершает один цикл. -
функция синхронизации анимации
: устанавливает предустановленные кривые ускорения, такие каклегкость
илилинейная
. -
animation-delay
: время между загрузкой элемента и началом последовательности анимации (классные примеры). -
анимация-направление
: устанавливает направление анимации после цикла. Его значение по умолчанию сбрасывается при каждом цикле. -
animation-iteration-count
: сколько раз должна выполняться анимация. -
animation-fill-mode
: устанавливает, какие значения применяются до/после анимации.
Например, вы можете установить, чтобы последнее состояние анимации оставалось на экране, или вы можете настроить его на возврат к тому состоянию, когда анимация началась. -
animation-play-state
: приостановить/воспроизвести анимацию.
Затем эти подсвойства можно использовать следующим образом:
@keyframes stretch { /* объявляем здесь действия анимации */ } .элемент { имя-анимации: растяжка; продолжительность анимации: 1,5 с; функция синхронизации анимации: облегчение; анимация-задержка: 0 с; направление анимации: альтернативное; количество итераций анимации: бесконечно; режим заполнения анимации: нет; состояние воспроизведения анимации: работает; } /* такой же как: */ . элемент { анимация: потягиваться 1,5 с облегчение 0 с чередовать бесконечный никто бег; }
Вот полный список значений, которые может принимать каждое из этих подсвойств:
кубический Безье (x1, y1, x2, y2) (например, кубический Безье (0,5, 0,2, 0,3, 1,0)) | ||||
анимация-длительность | Xs или Xms | 8679 | 79 006 | Xs или Xms |
число итераций анимации | X | |||
анимация-заполнение-режим | вперед, назад, оба, нет | |||
анимация-направление 300833 0086 | ||||
состояние воспроизведения анимации | paused, running, running |
Несколько шагов
Если анимация имеет одинаковые начальные и конечные свойства, полезно разделить запятыми значения 0% и 100% внутри @keyframes
:
@keyframes пульс { 0%, 100% { цвет фона: желтый; } 50% { цвет фона: красный; } }
Несколько анимаций
Вы можете разделить значения запятыми, чтобы также объявить несколько анимаций в селекторе. В приведенном ниже примере мы хотим изменить цвет круга в @keyframe
, а также подтолкнуть его из стороны в сторону другим.
.элемент { анимация: импульс 3 с легкость бесконечный чередовать, подтолкнуть 5s линейный бесконечный альтернативный; }
Производительность
Анимация большинства свойств связана с производительностью, поэтому следует проявлять осторожность перед анимацией любого свойства. Однако есть определенные комбинации, которые можно анимировать безопасно: 0028 Какие свойства можно анимировать?
В MDN есть список свойств CSS, которые можно анимировать. Анимационные свойства имеют тенденцию к цветам и числам. Пример неанимируемого свойства: 9.0005 фоновое изображение .
Поддержка браузера
Рабочий стол
Chrome | Firefox | IE | Edge | 0 Safari 908860 908890 | 0 | |
---|---|---|---|---|---|---|
4* | 5* | 10 | 12 | 5. 1* |
Мобильный телефон/планшет
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
112 | 110 | 4* | 6.0-6.1* |
Использование анимации CSS 903sMD
9
Сравнение анимационных технологий
анимация
Анимированное подчеркивание только с помощью CSS
анимация
Удобная маленькая система для анимированных входов в CSS
анимация
Новый способ задержки анимации ключевых кадров
анимация
Продвинутая анимация CSS с использованием кубического безье()
анимация
Сказка об анимационном перформансе
анимация
Доступная веб-анимация: объяснение WCAG по анимации
анимация
Аддитивные анимации в CSS
анимация
Анимация во встроенном стиле
анимация
Анимируйте различные конечные состояния, используя один набор ключевых кадров CSS
анимация
Анимированные нокаут-письма
анимация
Анимированные матрешки в CSS
анимация
Анимированное положение кольца фокусировки
анимация
Анимированные радиальные индикаторы выполнения SVG
анимация
Анимированные SVG
анимация
Анимация границы
анимация
Анимация ширины и высоты CSS без эффекта сжатия
анимация
Анимация счетчиков чисел
анимация
Анимация SVG с помощью CSS
анимация
Анимация границы градиента CSS
анимация
Анимация свойства `content`
анимация
Методы анимации для добавления и удаления элементов из стека
анимация
Анимация того, как работают треугольники CSS
анимация
Ключевые кадры анимации WebKit, разделенные запятыми
анимация
Управление CSS-анимацией и переходами с помощью JavaScript
анимация
Создание анимированного индикатора меню с помощью селекторов CSS
анимация
Библиотеки анимации CSS
анимация
Хитрости CSS-анимации: переходы между состояниями, отрицательные задержки, анимация начала и многое другое
анимация
CSS-анимация и переходы в электронной почте
анимация
CSS-анимация против веб-анимации API
анимация
CSS анимация из/в «авто»
анимация
Использование многошаговой анимации и переходов
анимация
«Встряхнуть» анимацию ключевого кадра CSS
анимация
переход
.element { переход: фоновый цвет 0,5 с легкость; }
«Полимеразная цепная реакция (ПЦР)» Библиотека биологических анимаций
Библиотека биологических и 3D-анимаций
- Описание
- Стенограмма
- Ключевые слова
- Информация
Полимеразная цепная реакция (ПЦР) позволяет исследователям получить миллионы копий определенной последовательности ДНК примерно за два часа. Этот автоматизированный процесс исключает необходимость использования бактерий для амплификации ДНК.
Эта анимация представлена в нашей «Коллекции в центре внимания» о полимеразной цепной реакции, наряду с видео-интервью с Кэри Маллис, 3D молекулярной анимацией ПЦР и несколькими лабораторными протоколами.
Эта анимация также доступна как ВИДЕО .
Полимеразная цепная реакция (ПЦР) позволяет исследователям получить миллионы копий определенной последовательности ДНК примерно за два часа. Этот автоматизированный процесс исключает необходимость использования бактерий для амплификации ДНК. Эта анимация представлена в нашей «Коллекции в центре внимания» о полимеразной цепной реакции вместе с видеоинтервью с Кэри Маллис, 3D-анимацией молекулярной ПЦР и несколькими лабораторными протоколами.
полимеразная цепная реакция, ДНК-полимераза, последовательность ДНК, автоматизированный процесс, цепная реакция, бактерии
- ID: 17044
- Источник: DNALC
- Скачать для офлайн (ПК)
- Полноэкранный HTML
Родственный контент
15625. Полимеразная цепная реакция (ПЦР)
ДНК-полимераза (синяя) создает множество копий ДНК (красный) в цикле полимеразной цепной реакции (ПЦР).
- ID: 15625
- Источник: DNAi
15479. Метод секвенирования ДНК по Сэнгеру, трехмерная анимация с комментарием
Метод секвенирования ДНК, разработанный Фредом Сэнгером, сегодня составляет основу автоматизированных «циклических» реакций секвенирования.
- ID: 15479
- Источник: DNALC.DNAi
15475. Циклы полимеразной цепной реакции (ПЦР), 3D анимация
Циклы полимеразной цепной реакции (ПЦР).
- ID: 15475
- Источник: DNALC.DNAi
15138. Название ПЦР
Кэри Маллис объясняет, как была названа полимеразная цепная реакция (ПЦР).
- ID: 15138
- Источник: DNAi
15624. Кэри Маллис
Изображение Кэри Маллис. В 1985 году Кэри Маллис изобрел полимеразную цепную реакцию (ПЦР) — метод амплификации или получения множества копий определенного фрагмента ДНК. Откровение пришло к этому эксцентричному персонажу во время поездки по северной Калифорнии.
- ID: 15624
- Источник: DNAi
15140. Создание множества копий ДНК, Кэри Маллис
Кэри Маллис рассказывает об открытии им полимеразной цепной реакции (ПЦР) — процесса, который позволяет химикам производить множество копий определенного фрагмента ДНК.