Анимация png-спрайта по слайдам
Недавно применял на сайте интересную анимацию, выглядит она как гифка, но по факту это одна png-картинка разбитая не несколько слайдов, которые крутятся с заданными параметрами. Если быть совсем точным, то, они не крутятся, а переключаются. Почему не гифка, потому что в гифке есть проблемы с прозрачностью, и поэтому будем использовать png-картинку и обычное правило animation
, подробнее здесь, но для нас важно будет свойство animation-timing-function
и его функция steps()
.logo{ background: url("http://denis-creative.com/wp-content/uploads/2018/10/meteor.png") 0 0 no-repeat; width: 130px; height: 130px; animation: logo 2s steps(47, end) infinite; } @keyframes logo { from {background-position: 0px 0px;} to {background-position: -6110px 0px;} }
Главная особенность данной функции состоит в том, что вместо плавного движения от 0px к −6110px происходят резкие прыжки с паузами между ними. Это идеально подходит для анимации кадров в png-спрайте. Шаг анимации равен ширине картинки, в приведенном выше примере это 130px, всего 47 шагов, которые проходят 1 полный круг за 2 секунды.
Рабочий пример анимированной png-картинки:
See the Pen Animate img by Denis (@deniscreative) on CodePen.0
Второй пример анимированного png-спрайта
В данном примере анимация проигрывается за 6 секунд и останавливается.
Чтобы просмотреть анимацию сначала — нажмите Rerun в нижнем правом углу окна Codepen.
See the Pen Animate png-sprite 2 by Denis (@deniscreative) on CodePen.0
Более подробно расписаны все составные свойства animation:
.planet { animation-name: animate-planet; animation-duration: 6s; animation-timing-function: steps(149); animation-delay: 1.2s; animation-iteration-count: 1; animation-fill-mode: forwards; }
Что в сокращенном виде будет выглядеть так:
.planet{ animation: animate-planet 6s steps(149) 1.2s 1 forwards; }
Плюс — в том, что можно задать прозрачный фон, чего нельзя задать для гифки,
а минус в том, что нужно подготовить спрайт с большим количествоми кадров, которые должны быть четко подогнаны друг под друга.
Столкнулся с проблемой редиректа в ModX. Стандартные варианты редиректа не работают. Нашел такое решение: Если…
Анимируем элементы на странице при прокрутке. В данном примере рассмотрим плавное появление элементов при скроле…
CSS правило @keyframes Создание CSS анимации начинается с объявления имени анимации в блоке @keyframes и…
Самый простой скролл вверх страницы HTML JS