20.09.15, 21:39
0 комментарий
  Уроки

Анимированная шапка для лендинга — анимация для шапки на продающей странице

Суть эффекта: при прокрутке страницы фоновое изображение в шапке становится постепенно размытым и заголовок с описанием смещается до самого низа шапки. Также при скролле вверх — анимация происходит в обратном направлении.

1 HTML структура

Для начала нам необходимо создать правильную HTML структуру:

<div id="header">
    <span class="bg normal"></span>
    <span class="bg blur" style="opacity: 0;"></span>
    <div class="wrap">
        <h1 style="transform: matrix(1, 0, 0, 1, 0, 0);">Большой заголовок</h1>
        <p class="lead" style="transform: matrix(1, 0, 0, 1, 0, 0);">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate odio, asperiores aut sapiente blanditiis cupiditate harum.</p>
    </div>
</div>


Поясню:

Строка: 2 — блок с фоновым изображением без размытия.
Строка: 3 — блок с фоновым размытым изображением, который изначально не виден.
Строки: с 4 по 7 — заголовок и подробное описание, которое будет смещаться при прокрутке вниз.


Как Вы поняли из HTML структуры, нам необходимо два фоновых изображения: размытое и неразмытое.

Поэтому для каждого из блоков сейчас задаем своё фоновое изображение. Стилей немного:

#header {
    height: 90vh;
    min-height: 300px !important;
    position: relative;
}
 
#header:before {
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 100%;
    display: block;
    content: ' ';
    background: #000;
    opacity: 0.4;
}
 
#header span.bg.normal {
    background-image: url("../images/header-normal.jpg");
}
 
#header span.bg.blur {
    background-image: url("../images/header-blur.jpg");
    opacity: 0;
}
 
#header span.bg {
    background-color: #000;
    background-position: 50% 0;
    background-repeat: no-repeat;
    background-size: cover;
    display: block;
    height: 100%;
    left: 0;
    opacity: 1;
    position: absolute;
    top: 0;
    width: 100%;
}
 
#header .wrap {
    left: 50%;
    max-width: 800px;
    padding: 0 15px;
    position: absolute;
    text-align: center;
    top: 50%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    width: 100%;
}
 
#header h1 {
    color: #fff;
    font-size: 80px;
    font-weight: 900;
    line-height: 95px;
    margin: 0 0 20px;
}
 
#header p {
    color: #fff;
    font-size: 32px;
    font-weight: 300;
    line-height: 36px;
}


Со стилями закончили и переходим к анимации.

Я использую опять же библиотеку ScrollMagic, которая позволяет создавать красивую анимацию на лендинге.

Подключаем необходимые скрипты:

ScrollMagic.min.js
jQuery.min.js
TweenMax.min.js
animation.gsap.js
script-sitehere.js — наш скрипт


Два первых скрипта можно не скачивать и подключить прямо из CDN:

<script src="http://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/ScrollMagic.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="js/TweenMax.min.js"></script>
<script src="js/animation.gsap.js"></script>
<script src="js/script-sitehere.js"></script>


А сейчас давайте заглянем внутрь script-sitehere.js:

$(function () {
    var scrollMagicController = new ScrollMagic.Controller(
        {
            globalSceneOptions: {
                triggerHook: 'onLeave'
            }
        }
    );
    var topperTween = TweenMax.to('#header span.bg.blur ', 1,
        {
            opacity: 1
        }
    );
    var headingTween = TweenMax.to('#header h1, #header p', 1,
        {
            y: 200
        }
    );
    var scene = new ScrollMagic.Scene(
        {
            triggerElement: '#header',
            duration: '70%'
        }
    )
    .setTween([topperTween, headingTween])
    .addTo(scrollMagicController);
});


Ну вот и всё!

Автор урока: Юрий Немец

ДЕМО

Посмотреть
пример

СКАЧАТЬ

Вес файла
604.15 Kb

Напишите своё мнение