logo

Анимированный логотип на чистом CSS

Если вы посмотрите на логотип, он состоит из 4 основных цветных точек. Эти точки расширяются и принимают вид скругленных линий, затем сжимаются, принимая первоначальный вид.

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

Создание анимированного логотипа на чистом CSS начнем с написания HTML-кода. Он очень простой — в одном блоке расположены 4 элемента, каждый из которых «живет своей жизнью».


<div class="slack ">
  <span class="slack__dot slack__dot_a"></span>
  <span class="slack__dot slack__dot_b"></span>
  <span class="slack__dot slack__dot_c"></span>
  <span class="slack__dot slack__dot_d"></span>
</div>

Задаем относительное позиционирование и общий размер нашему блоку-контейнеру, а также угол наклона. Каждая точка абсолютно позиционирована внутри родительского контейнера, и имеет свои размеры и радиус закругления, равный половине диаметра.


.slack {
  position: relative;
  z-index: 100;
  width: 96px;
  height: 96px;
  -webkit-transform: rotate(-15deg);
  transform: rotate(-15deg);
}
.slack__dot {
  display: block;
  position: absolute;
  width: 18px;
  height: 18px;
  border-radius: 9px;
}

Далее каждому элементу (круг — линия) логотипа присваиваем свой цвет, вид трансформации и время анимации. Указываем для каждого свое положение: слева вверху, справа вверху и соответственно слева и справа снизу.


.slack__dot_a {
  top: 0;
  left: 0;
  background-color: #3eb991;
  -webkit-transform: translateX(18px);
  transform: translateX(18px);
  -webkit-animation: slack-animation--a 2s infinite;
  animation: slack-animation--a 2s infinite;
}

.slack__dot_b {
  top: 0;
  right: 0;
  background-color: #6ecadc;
  -webkit-transform: translateY(18px);
  transform: translateY(18px);
  -webkit-animation: slack-animation--b 2s infinite;
  animation: slack-animation--b 2s infinite;
}

.slack__dot_c {
  bottom: 0;
  right: 0;
  background-color: #e9a820;
  -webkit-transform: translateX(-18px);
  transform: translateX(-18px);
  -webkit-animation: slack-animation--c 2s infinite;
  animation: slack-animation--c 2s infinite;
}

slack__dot_d {
  bottom: 0;
  left: 0;
  background-color: #e01563;
  -webkit-transform: translateY(-18px);
  transform: translateY(-18px);
  -webkit-animation: slack-animation--d 2s infinite;
  animation: slack-animation--d 2s infinite;
}

В коде выше для каждого элемента указана анимация, имеющая свое индивидуальное название: slack-animation—a, slack-animation—b, slack-animation—c, slack-animation—d соответственно. Время анимации 2 секунды и повторяется она бесконечно.

Анимация построена по одному принципу: точка начинает расширятся и превращается линию, затем линия начинает сжиматься и превращается опять в точку. Следующем шагом точка перемещаеся в свое первоначальное положение и все начинается заново. Разница заключается в том, у каждого элемента своя траектория движения.

Анимация для точки a


@-webkit-keyframes slack-animation--a {
  0% {
    top: 0;
    bottom: auto;
    height: 18px;
  }
  33% {
    top: 0;
    bottom: auto;
    height: 96px;
  }
  34% {
    top: auto;
    bottom: 0;
    height: 96px;
  }
  66% {
    top: auto;
    bottom: 0;
    height: 18px;
  }
  100% {
    top: auto;
    bottom: 78px;
    height: 18px;
  }
}

@keyframes slack-animation--a {
  0% {
    top: 0;
    bottom: auto;
    height: 18px;
  }
  33% {
    top: 0;
    bottom: auto;
    height: 96px;
  }
  34% {
    top: auto;
    bottom: 0;
    height: 96px;
  }
  66% {
    top: auto;
    bottom: 0;
    height: 18px;
  }
  100% {
    top: auto;
    bottom: 78px;
    height: 18px;
  }
}

Анимация для точки b


@-webkit-keyframes slack-animation--b {
  0% {
    right: 0;
    left: auto;
    width: 18px;
  }
  33% {
    right: 0;
    left: auto;
    width: 96px;
  }
  34% {
    right: auto;
    left: 0;
    width: 96px;
  }
  66% {
    right: auto;
    left: 0;
    width: 18px;
  }
  100% {
    right: auto;
    left: 78px;
    width: 18px;
  }
}
@keyframes slack-animation--b {
  0% {
    right: 0;
    left: auto;
    width: 18px;
  }
  33% {
    right: 0;
    left: auto;
    width: 96px;
  }
  34% {
    right: auto;
    left: 0;
    width: 96px;
  }
  66% {
    right: auto;
    left: 0;
    width: 18px;
  }
  100% {
    right: auto;
    left: 78px;
    width: 18px;
  }
}

Анимация для точки c


@-webkit-keyframes slack-animation--c {
  0% {
    bottom: 0;
    top: auto;
    height: 18px;
  }
  33% {
    bottom: 0;
    top: auto;
    height: 96px;
  }
  34% {
    bottom: auto;
    top: 0;
    height: 96px;
  }
  66% {
    bottom: auto;
    top: 0;
    height: 18px;
  }
  100% {
    bottom: auto;
    top: 78px;
    height: 18px;
  }
}
@keyframes slack-animation--c {
  0% {
    bottom: 0;
    top: auto;
    height: 18px;
  }
  33% {
    bottom: 0;
    top: auto;
    height: 96px;
  }
  34% {
    bottom: auto;
    top: 0;
    height: 96px;
  }
  66% {
    bottom: auto;
    top: 0;
    height: 18px;
  }
  100% {
    bottom: auto;
    top: 78px;
    height: 18px;
  }
}

Анимация для точки d


@-webkit-keyframes slack-animation--d {
  0% {
    left: 0;
    right: auto;
    width: 18px;
  }
  33% {
    left: 0;
    right: auto;
    width: 96px;
  }
  34% {
    left: auto;
    right: 0;
    width: 96px;
  }
  66% {
    left: auto;
    right: 0;
    width: 18px;
  }
  100% {
    left: auto;
    right: 78px;
    width: 18px;
  }
}
@keyframes slack-animation--d {
  0% {
    left: 0;
    right: auto;
    width: 18px;
  }
  33% {
    left: 0;
    right: auto;
    width: 96px;
  }
  34% {
    left: auto;
    right: 0;
    width: 96px;
  }
  66% {
    left: auto;
    right: 0;
    width: 18px;
  }
  100% {
    left: auto;
    right: 78px;
    width: 18px;
  }
}
Рисунок лого

Теперь наш логотип стал анимированным. Линии как бы перекрещиваются друг с другом, проходя друг над другом в точках пересечения. Это хорошо видно на рисунке.

А в начале статьи они проходят как бы сквозь друг друга, при этом цвета смешиваются.

Свойство mix-blend-mode указывает режим наложения исходного изображения с наложенным. В качестве фонового изображения может выступать любой элемент, расположенный под исходным элементом.При помощи режимов наложения в CSS можно определять, как несколько слоев накладываются друг на друга. До настоящего времени, такой функционал был прерогативой программ фотомонтажа, но теперь он доступен и в CSS.

Режимы наложения цвета отлично подходят для достижения различных визуальных эффектов на странице, что было невозможно ранее. Эта технология только вступает в свою полную силу и на данный момент браузеры поддерживают её лишь частично.

Указав свойство mix-blend-mode со значением multiply для наших кружков получаем эффект смешивания цветов.


.slack__dot {
  display: block;
  position: absolute;
  width: 18px;
  height: 18px;
  border-radius: 9px;
  mix-blend-mode: multiply;
}

Оригинал статьи.

Вольный перевод: shabloncss.ru.


Практические примеры 0

Рекомендую прочитать...

Необычное превью для «Главной»
необычное превью для главной

Страница на которой выводятся превью статей, размещенных на сайте, обычно именуется «Главной». Чаще всего превью статьи выглядит так: заголовок статьи, небольшая картинка — миниатюра, и небольшой текст в котором, либо начало статьи, либо краткое содержание статьи и кнопочка — ссылка типа «Читать далее», ведущая на страницу со статьей. Ниже представлена несколько иная «подача» превью статьи. Здесь миниатюра совмещена с кратким анонсом статьи

Читать полностью
Анимация при скролле страницы
Анимация при скролле страницы

Как и было обещано в предыдущей статье «Бегущая строка на CSS3» сегодня рассмотрим работу анимации при прокрутке (скролле) страницы. Существуют различные способы для реализации данной проблемы. В статье рассмотрим 2 варианта решения. Они довольно простые и не вызовут затруднений при их реализации.

Читать полностью
3D-трансформация в примерах
3d трансформация в примерах

В первом примере при наведении курсора на изображение как бы открывается обложка альбома, открывая скрытую, но «важную» информацию.
Второй пример — первоначально блоки с анонсом мы видим в перспективе, при наведении мышки блок принимает нормальный вид.

Читать полностью

Всего комментариев: 0

Оставить комментарий

Ваш email не будет опубликован.