Сегодня я поделюсь с вами очень простой и интересной демонстрационной анимацией светофора.Визуализация выглядит следующим образом:
На первый взгляд может показаться, что анимация на чистом CSS невозможна, но на самом деле понять принцип относительно просто.
Во-первых, здесь 3 источника света, мы написали по одному для каждого источника света.animation
:
<div class="traffic-light">
<div class="light red"></div>
<div class="light amber"></div>
<div class="light green"></div>
</div>
.red {
animation: red 10s linear infinite;
}
.amber {
animation: amber 10s linear infinite;
}
.green {
animation: green 10s linear infinite;
}
Как видно из приведенного выше стиля, продолжительность анимации каждого источника света составляет 10 с, и когда анимация непрерывно воспроизводится в цикле, временные отношения между ними всегда будут синхронизированы.
Ссылаясь на рисунок ниже, начиная с функции, легко понять логическую связь между анимацией трех огней (здесь логическая связь относится к временной связи между ними)
На рисунке он разделен на этапы 5 или этапы 5. На каждом этапе разные индикаторы находятся во включенном или выключенном состоянии. Затем мы явно делим временной отрезок 0% - 100% на 5 частей, каждые 20% - это состояние, и задаем параметры в разных состояниях.
Начнем с красного света. 0%-20% и 20%-40%, на этих двух этапах всегда горит красный свет, а в остальное время черный. Тогда мы можем установить это так:
@keyframes red {
0% {
background: black;
}
2%, 40% {
background-color: red;
}
42%, 100% {
background: black;
}
}
Здесь есть зазор в 2%, чтобы дать свету эффект градиента. Может быть записано в соответствии с 20%``40%
Точно так же желтый свет горит 20%-40% и 80%-100%, а остальное время не горит. Здесь также добавляется зазор в 2%.
@keyframes amber {
0%, 20% {
background: black;
}
22%, 40% {
background: #FF7E00;
}
42%, 80% {
background: black;
}
82%, 100% {
background: #FF7E00;
}
}
Зеленый свет тоже очень простой, настройте его, как показано на картинке.
@keyframes green {
0%, 40% {
background: black;
}
42%, 80% {
background: green;
}
82%, 100% {
background: black;
}
}
Наконец, сделали! Конечно вы можетездесьСм. исходный код.
(над)
автор этой статьиThinker
Если в этой статье есть какие-либо ошибки, пожалуйста, оставьте сообщение, и я исправлю его вовремя.
Если вы найдете это полезнымпоставить лайкилисобиратьБар!
Добро пожаловать на перепечатку или распространение, пожалуйста, указывайте источник при перепечатке