реклама
разместить

Ключевые кадры и анимация в CSS. Свойства анимации. 3D трансформации. Сдвиг и перспектива

А читатели моего telegram - канала узнают все новости и полезности самыми первыми.
А читатели моего telegram - канала узнают все новости и полезности самыми первыми.

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

Итак, анимация в CSS позволяет элементу постепенно измениться с одного стиля к другому. Вы можете изменять множество CSS свойств столько раз, сколько вы хотите. Ключевые кадры содержат стили, которые будут иметь элементы в определенное время
При определении стилей CSS внутри правила @keyframes, анимация постепенно изменится от текущего стиля к новому стилю в определенное время.
Чтобы получить работающую анимацию, вам необходимо связать анимацию с элементом.

Ключевые кадры содержат стили, которые будут иметь элементы в определенное время. В примере ниже, анимация длится 3 секунды и изменяет зеленый фоновый цвет класса animation на красный и голубой три раза: когда анимация выполнена на 50%, на 70%, и когда анимация будет выполнена на 100%.

<style> .animation { width: 100px; height: 100px; background-color: rgb(5, 136, 75); animation-name: color; animation-duration: 3s; } @keyframes color { 0% { background-color: rgb(5, 136, 75); } 50% { background-color: rgb(187, 60, 56); } 100% { background-color: rgb(0, 145, 255); } } </style> <body> <div class="animation"></div> </body>


color это название анимации. Вы можете использовать любое имя для вашей анимации. Вставьте этот код в свой редактор и поэксперементируйте с цветами и временем.

В качестве альтернативы использования процентов, вы можете использовать ключевые слова from и to , где:
from это значение начинающееся с 0%
to это значение заканчивающееся на 100%.

Например, оба примера выводят один и тот же результат:

@keyframes color { 0% { background-color: rgb(5, 136, 75); } 50% { background-color: rgb(187, 60, 56); }

Или:

@keyframes color { from { background-color: rgb(5, 136, 75); } to { background-color: rgb(187, 60, 56); }

Чтобы анимация работала, вам необходимо связать анимацию с элементом.

Теперь перейдем к изучению свойств animation.

animation-name определяет какую анимацию использовать.

animation-name: color;

Свойство animation-duration определяет длительность выбранных анимаций в секундах.

animation-duration: 3s;

Если свойство animation-duration не было определено, то анимация не будет воспроизведена, потому что значением по умолчанию длительности является 0.

animation-delay - определяет задержку до начала анимации.

Значения animation-delay и animation-duration могут быть определены в секундах (s) или миллисекундах (ms).

animation-timing-function определяет кривую скорости анимации. Может иметь следующие значения:ease - анимация начинается медленно, затем быстро, затем медленно заканчивается (по умолчанию), linear - анимация с одинаковой скоростью от начала и до конца, ease-in - анимация с медленным началом, ease-out - анимация с медленным концом, ease-in-out - анимация с медленным началом и концом, cubic-bezier(n,n,n,n) - позволяет вам определять собственные значения в функции cubic-bezier.

Свойство animation-iteration-count определяет количество повторов анимации. Infinity - бесконечно количество раз. Если вы используете 0 или отрицательное число для animation-iteration-count, то анимация никогда не начнется.

animation-direction указывает, как ключевой кадр должен быть применен. Значениями могут быть: normal - значение по умолчанию, что значит, что оно выполняется от 0 % до 100%. reverse - анимация выполняется в обратном направлении от 100 % до 0%. alternate - анимация выполняется вперед, затем обратно, затем снова вперед. alternate reverse - анимация сначала выполняется в обратном направлении, затем вперед, затем снова в обратном направлении.

Разберем как можно сократить код, посмотрите пример ниже:

div { animation-name: color; animation-duration: 3s; animation-timing-function: ease-in; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: normal; }

А теперь сокращаем:

div { animation: color 3s ease-in 2s infinite normal; }

3D трансформации.
Вместе с осями x и y, 3D Трансформация представляет ось-Z, которая позволяет 3D манипуляции.

3D Трансформация похожа на 2D Трансформацию:rotateX(), rotateY() и rotateZ() вращают элемент в 3-х мерном пространстве вокруг соответствующих осей и с заданным градусом.

div.X { transform: rotateX(150deg); } div.Y { transform: rotateY(150deg); } div.Z { transform: rotateZ(150deg); }

Вы можете выключить все трансформации, примененные к элементу, используя функцию none: transform: none;

Сдвиг.

Методы 3D сдвига позволяют вам передвигать элементы горизонтально (translateX), вертикально (translateY) и к или от экрана (translateZ), используя любые единицы длины (px, em, %, и т.д.). Положительные значения сдвигают элемент к зрителю, а отрицательные – от него.

#box { transform: translateX(30px) translateY(4em) translateZ(-12px); }

Скопируйте и посмотрите код на практике, чтобы сравнить результат до сдвига и после сдвига.

Метод translate3d() позволяет вам передавать значения x, y, и z, все за один раз, следующим образом:

#box { transform: translate3d(-22px, 4em, 10px); }

Также, как и в методе translate3d(), существуют также scale3d() и rotate3d(), которые применяются для масштабирования и вращения элементов в 3D.

Сдвиг элемента похож на косвенное позиционирование - он не влияет на поток документа. Сдвинутый элемент оставит свое положение в потоке и появится только для перемещения.

Перспектива.

Перспектива определяет глубину воспроизведения 3D сцены. Представляйте себе перспективу, как расстояние от зрителя до объекта. Чем больше значение, тем больше расстояние и меньше интенсивность визуального эффекта. При определении свойства perspective для элемента, перспективный вид получают именно дочерние элементы, а не сам элемент.

div.yellow { perspective: 100px; } div.red { transform: rotateX(45deg); }

Свойство perspective влияет только на трансформированные 3D элементы.

Испытывайте эти свойства на практике, внедряйте в свои проекты, чтобы оживить их. Также мы можем реализовать анимации через JavaScript, что я и планирую изучать дальше и делиться полученными знаниями с Вами.

реклама
разместить
Начать дискуссию
Вложили 1,5 млн рублей в кондитерский отдел — закрылись через 4 месяца с долгом в 350 000

История пары из Москвы, которая решила вместо свадебного путешествия вложиться в кондитерский бизнес. О том, как ребята подходили к расчетам инвестиций, выбору помещения и почему у них всё пошло не по плану, читайте в нашей новой статье.

Фото не нашего отдела, но у нас было что-то похожее на этот
1818
Bloomberg узнало, что OpenAI близка к закрытию раунда инвестиций на $40 млрд

Оценка компании может достичь $300 млрд.

55
11
Метод Кирпича в маркетинге: основательность, которая строит успех годами

В мире маркетинга, где тренды часто меняются, а стратегии могут быть сиюминутными, метод Кирпича выделяется своей устойчивостью и долгосрочной ориентацией. Это подход, который напоминает строительство здания: кирпич за кирпичом, шаг за шагом. Но почему он получил такое название, и кто такие «кирпичные люди»? Давайте разбираться.

Метод Кирпича в маркетинге: основательность, которая строит успех годами
33
11
«Газпром» на фоне убытков ждёт реструктуризация, её возглавляет местная «Серсея Ланнистер» Елена Илюхина — FT

Её план как замгендиректора должен «расшевелить болото».

Источник фото: РБК
5252
55
44
22
22
Сделать убыточным Газпром надо постараться конечно...
На сайте Apple появился компьютер Lumon Terminal Pro из сериала Apple TV+ «Разделение» — фанаты расстроены, что его нельзя купить

К их сожалению, это всего лишь рекламная кампания стриминга.

Источник фото: Apple — здесь и далее
1717
44
11
Почему выплаты за рождение ребёнка (льготная ипотека, подъёмные и т.д.) не поднимают и не поднимут рождаемость? Взгляд инвестиционного юриста на демографию с точки зрения инвестиционной логики

Выплаты за рождение ребёнка (льготная ипотека, подъёмные и проч.) не поднимают и не поднимут рождаемость в стране по следующим причинам.

Почему выплаты за рождение ребёнка (льготная ипотека, подъёмные и т.д.) не поднимают и не поднимут рождаемость? Взгляд инвестиционного юриста на демографию с точки зрения инвестиционной логики
1414
Слабо чел, перекладываешь с больной(современной) головы на здоровую, никакие материальные блага не заставят рожать современных нихочух. Потому что как раз достаток множит индивидуализм, мне кажется Россия никогда еще не была настолько индивидуалисткой, и тут ты прав про соцсети и вечное сравнение людей друг друга по достатку и дольче-вите, когда нас рожали в 80-90е никто не думал особо о достатке, иначе почему почти все наши родители делали нас до 30 лет. Вот сейчас говорят — дайте нам квартиру, дайте нам зарплату будем рожать! Но рожают как раз бедняки, потому что коллективом выживать проще, да и добрая половина современных родителей тебе скажет что сколько бы ты не готовился ты никогда не будешь готов к ребенку. А когда у человека все будет в достатке, нахрена ему лишать себя удовольствий? Да он будет бухать, трахать эскортниц, ездить в отпуск заграницу и заниматься прочим гедонизмом, нахрена ему дети когда и так все круто? Какие выходы я вижу, не очень то этичные и бредовые(я сам говорю что бредовые, не судите строго): - отключить интернет, чтобы все пошли на улицу общаться и знакомиться; - частичная деэмансипация женщин — типа высшее образование, какие то должности только после рождения детей; - программы рождения с добровольным отьемом детей у родителей, чтоб они получили свою выплату и шли дальше жить свою лучшую жизнь; Из полуадекватных — многоженство! Да блин. Почему мужик с большими деньгами не может вступить в брак с несколькими женщинами ЗАКОННО и рожать в промышленных масштабах ведь он МОЖЕТ тянуть все это. Да и желающие женщины найдутся на самом деле кто бы что не говорил, особенно после того как это публично разрешат окно овертона начнет расширяться. Из адекватных мер видится только укрепление влияния религии(но религия не хочет развиваться под современный мир сейчас), какие то добровольные евгенические программы без негатива и что то такое идейное
Парламент Казахстана обсуждает создание криптобанка

В нижней палате парламента Казахстана (Мажилисе) обсудили инициативу о создании специализированного криптобанка, который возьмет на себя функции регулирования и контроля оборота цифровых валют. С такой идеей выступил депутат Азат Перуашев, направивший соответствующий запрос на имя премьер-министра страны Олжаса Бектенова. По словам депутата, такой…

Парламент Казахстана обсуждает создание криптобанка
66
Как я превратила личную драму в миллионный бизнес: Секрет "невидимой" платформы, где женщины плачут и покупают

«Два года назад я была мамой в декрете с долгами и нулём на счету. Сегодня мой закрытый «островок доверия» собирает тысячи женских историй, а рекламодатели платят за доступ к аудитории. Расскажу, как стартовала с бюджетом 500К и окупила вложения за полгода»

Как я превратила личную драму в миллионный бизнес: Секрет "невидимой" платформы, где женщины плачут и покупают
99
22
11
11
11
11
Не только поисковики: как технологии ускоряют процесс трудоустройства

Рассказываем, как с помощью ИИ (и не только) упростить поиск работы и прохождение собеседований.

Не только поисковики: как технологии ускоряют процесс трудоустройства
3232
реклама
разместить
День 1128: Минпромторг вместе с «Яндексом» и «Сбером» разрабатывают единый стандарт ПО для промышленных роботов

Собираем новости, события и мнения о рынках, банках и реакциях компаний.

Фото «РИА Новости» 
66
55
22
Илон Маск подтвердил запуск чат-бота Grok в Telegram

Ранее на релиз намекал основатель мессенджера Павел Дуров.

Источник фото: Bloomberg
3131
1515
44
33
22
22
11
11
"доступен бесплатно владельцам платной подписки" я так ржал
[]