Примечание переводчика: содержание этой статьиBaymax in CSS - CSS AnimationПеревод
«Большой белый» в CSS
Давайте создадим персонажа Бэймакс из фильма «Большой герой 6» с помощью CSS.
В этом посте мы анимируем фоновое изображение вместе с тонким эффектом синхронизации анимации и делаем демонстрацию CSS с одним элементом HTML.
Ты сможешьпосмотреть в полноэкранном режиме здесь.
один элемент
Используя псевдоэлементы, мы сможем создать часть лица, используя один HTML-элемент.
<div class="baymax"></div>
стиль
Чтобы подготовить сцену, мы добавим на экран тонкий градиент, чтобы он выглядел как изогнутая белая голова. С этой целью мы будемbody
Используйте радиальный градиент сверху.
body {
background: radial-gradient(circle at center, #fff, #fff 50%, #aaa);
background-size: 100% 100%;
background-repeat: no-repeat;
height: 100vh;
}
Далее мы будем располагаться лицом в центре страницы. Рот — простая черная линия, мы будем использовать созданную границу.
.baymax {
border-bottom: 1.5em solid #000;
position: absolute;
top: 50%;
left: 50%;
width: 50%;
transform: translate(-50%, -40%);
}
Первое свойство задает ширину1.5em
черная граница. Затем, используя линию абсолютного позиционирования, сдвиньте ее на 50% вниз и на 50% вниз слева. Эти 50% значений относятся к контейнеру (body
) зависит от размера элемента.
Проблема, с которой мы столкнулись сейчас, заключается в том, что элементы теперь начинаются в середине и на половине экрана. Это не по центру.
Чтобы противодействовать этому, мы используем преобразование, чтобы стянуть элемент к 50% его ширины и увеличить его ширину на 40%.
На этом этапе рот центрируется вот так:
Плюс глаз
мы будем использоватьbefore
а такжеafter
Псевдоэлементы добавляют глаза на лицо. Это не требует дополнительного HTML и полностью обрабатывается CSS.
.baymax::before {
background: #000;
border-radius: 50%;
content: "";
position: absolute;
width: 12em;
height: 12em;
left: -9em;
top: -6em;
transform: skewX(-4deg);
}
.baymax::after {
background: #000;
border-radius: 50%;
content: "";
position: absolute;
width: 12em;
height: 12em;
right: -9em;
top: -6em;
transform: skewX(4deg);
}
Каждый из этих псевдоэлементов имеет черный фон и радиус границы 50%, чтобы сделать их круглыми. Каждый расположен на одном конце рта, один на концеskew
Преобразуйте так, чтобы они казались немного наклоненными назад. Результат должен выглядеть так:
низкая мощность
В фильме есть интересная сцена, где батарея Baymax садится. Он бегал вокруг, его веки были опущены. Мы можем использовать комбинацию фоновых градиентов и анимации для создания эффекта.
Сначала мы должны дать фону два цвета. Глазная часть черная, черная — веко, белая — веко. Сначала нам нужно поместить белую часть за пределы глаза, затем мы анимируем ее так, чтобы веко опустилось.
.baymax::before {
background: linear-gradient(to bottom, #efefef, #efefef 50%, #000 50%, #000);
background-position: 0 -100%;
background-size: 200% 200%;
...
}
.baymax::after {
background: linear-gradient(to bottom, #efefef, #efefef 50%, #000 50%, #000);
background-position: 0 -100%;
background-size: 200% 200%;
...
}
Мы добавляем фоновый линейный градиент так, чтобы он был в два раза больше высоты контейнера, затем располагаем его так, чтобы верхняя половина находилась за пределами контейнера.
С двумя фоновыми градиентами мы можем добавить анимациюkeyframes
контролировать движение век.
@keyframes blink {
0%, 50% {
background-position: 0 100%;
}
85%, 95% {
background-position: 0 75%;
}
100% {
background-position: 0 100%;
}
}
анимацияkeyframes
это способ описать серию кадров, используя проценты. Процент связан с продолжительностью анимации. Таким образом, процент 50% означает половину анимации.
Таким образом, мы можем установить фон на полпути, затем между 50% и 85%, двигаться вниз, а затем быстро вернуться в конце анимации.
Следующим шагом будет указание псевдоэлементу использовать эти ключевые кадры анимации. Будуanimation
атрибут существующего стиля.
.baymax::before {
animation: blink 6s infinite;
...
}
.baymax::after {
animation: blink 6s 0.1s infinite;
...
}
Здесь мы говорим браузеру использовать для каждого элементаblink
анимация. Продолжительность анимации установлена на 6 секунд и будет повторяться бесконечно.
Во втором примере есть дополнительное свойство.6s
После0.1
секунд, чтобы указать браузеру отложить анимацию0.1
Второй. Это создает эффект закрытия второго глаза чуть позже первого. Это добавляет эффект усталости, провисания и делает его более человечным. Окончательный результат должен выглядеть так:
Ты сможешьпосмотреть в полноэкранном режиме здесь.
браузер
В примерах кода я опускаю все часто используемые-webkit
а также-moz
приставка.transform
а такжеanimation
Атрибуты должны быть префиксными, я рекомендую использовать такие вещи, как AutoPRefixer.
Совместно используемая GIF-версия
Это анимированная GIF-версия, которой вы можете легко поделиться в Интернете.
(над)
автор этой статьиThinker
Если в этой статье есть какие-либо ошибки, пожалуйста, оставьте сообщение, и я исправлю его вовремя.
Если вы найдете это полезнымпоставить лайкилисобиратьБар!
Добро пожаловать на перепечатку или распространение, пожалуйста, указывайте источник при перепечатке