Анимированная вводная секция

sodafloofy

Gauss
Дней с нами
3.745
Розыгрыши
0
Сообщения
240
Репутация
144
Реакции
197
1446203396_animated-intro-section-featured.png

Создание структуры

Структура HTML для каждого эффекта довольно проста: section.cd-intro используется в качестве контейнера для элемента div.cd-intro-content который обертывает основной подзаголовок

Структура для основного подзаголовка слегка отличается от одного эффекта к другому: для живого эффекта, например, мы используем тег <h1> для заголовка страницы, тег <p> как подзаголовок, и div.action-wrapper для обертывания кнопки действия:

Код:
<section class="cd-intro">
   <div class="cd-intro-content bouncy">
     <h1>Animated Intro Section</h1>
     <p>A collection of text effects for the intro section of your website</p>
     <div class="action-wrapper">
       <a href="#0" class="cd-btn main-action">Get started</a>
       <a href="#0" class="cd-btn">Learn More</a>
     </div>
   </div>
</section>

Класс .bouncy добавлен в .cd-into-content чтобы использовать для запуска анимации.

Добавление стиля

По умолчанию, мы прячем ввод содержимого, установив его непрозрачность до нуля, затем мы оживляем его с помощью CSS-анимации.
Для живого эффекта, например, мы создали 3 различных анимации для <h1>, <p> и .cd-btn кнопок:

Код:
.cd-intro-content h1,
.cd-intro-content p,
.cd-intro-content .cd-btn {
  opacity: 0;
  animation-delay: 0.3s;
  animation-fill-mode: forwards;
}
.bouncy.cd-intro-content h1 {
  animation-name: cd-bounce-right;
}
.bouncy.cd-intro-content p {
  animation-name: cd-bounce-left;
}
.bouncy.cd-intro-content h1,
.bouncy.cd-intro-content p {
  animation-duration: 0.6s;
}
.bouncy.cd-intro-content .cd-btn {
  animation-name: cd-bounce-rotate;
  animation-duration: 0.5s;
}
.bouncy.cd-intro-content .cd-btn.main-action {
  animation-delay: 0.4s;
}
@keyframes cd-bounce-right {
  0% {
  opacity: .2;
  transform: translateX(-200px);
  }
  60% {
  opacity: .7;
  transform: translateX(15px);
  }
  100% {
  opacity: 1;
  transform: translateX(0);
  }
}
@keyframes cd-bounce-left {
  0% {
  opacity: .2;
  transform: translateX(200px);
  }
  60% {
  opacity: .7;
  transform: translateX(-15px);
  }
  100% {
  opacity: 1;
  transform: translateX(0);
  }
}
@keyframes cd-bounce-rotate {
  0% {
  opacity: .2;
  transform: perspective(800px) rotateX(-80deg);
  }
  20% {
  opacity: 1;
  }
  60% {
  transform: perspective(800px) rotateX(20deg);
  }
  100% {
  opacity: 1;
  transform: perspective(800px) rotateX(0);
  }
}

Давайте взгялнем на видео эффект сейчас: если открыть файл video.html, вы можете увидеть, что дополнительно была выставлена div.cd-bg-video-wrapper; этот элемент используется, чтобы обернуть фоновое видео (Вы не увидите ни одного элемента "video" внутри HTML, так как он загружается с помощью j&#097;vascript - еще из раздела 'Обработка событий').

Кроме того, мы выставили два элемента (.svg-mask и .svg-mask-mobile) внутри тегов <h1>: эти svgs используются для создания эффекта прозрачности заголовка (первая, когда ширина устройства больше чем, 768px, вторая для других устройств).
В принципе, идея такова: мы создаем непрозрачный прямоугольный <path> элемент, а затем мы добавляем прозрачную область в форме заголовка страницы (в нашем демо, 'Видео Эффект')
Затем svg используется в качестве слоя, чтобы покрыть всю .cd-intro-content: прозрачная область в формате svg позволяет увидеть то, что ниже его (на фоне видео).

Вы можете создать svg маску, просто используя графический векторный редактор. Мы использовали Adobe Illustrator, где мы создали прямоугольник, а затем удалили текст, используя инструмента Pathfinder.

Код:
.cd-bg-video-wrapper {
  /* background cover video */
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: url(../assets/bg-img.jpg) no-repeat center center;
  background-size: cover;
}
.cd-bg-video-wrapper video {
  /* you won't see this element in the html, but it will be injected using js */
  display: block;
  position: absolute;
  left: 50%;
  top: 50%;
  bottom: auto;
  right: auto;
  transform: translateX(-50%) translateY(-50%);
  min-height: 100%;
  min-width: 100%;
  max-width: none;
  height: auto;
  width: auto;
}
.video.cd-intro-content svg {
  position: absolute;
  z-index: 2;
  /* center the svg inside its parent */
  left: 50%;
  top: 50%;
  bottom: auto;
  right: auto;
  transform: translateX(-50%) translateY(-50%);
  opacity: 0.8;
}
.video.cd-intro-content svg.svg-mask {
  /* this is the svg mask used on desktop version */
  display: none;
}
@media only screen and (min-width: 768px) {
  .video.cd-intro-content svg.svg-mask-mobile {
  display: none;
  }
  .video.cd-intro-content svg.svg-mask {
  display: block;
  }
}

Обработка событий

Эти эффекты были созданы с использованием только CSS.
Мы использовали jQuery для видео эффекта только к загрузки фонового видео, если ширина устройства больше, чем 768px. data-video был добавлен в div.cd-bg-video-wrapper чтобы доставать url video.

 
А кто автор?