Создаем простой Parallax эффект

14-02-05 JavaScript jQuery 4

Многие сайты  используют в своем оформлении параллакс эффекты. По сути, параллакс — это прокрутка нескольких слоев контента на разных скоростях для создания эффекта перспективы и глубины. Слоев может быть сколько угодно.

В этой статье мы рассмотрим  базовые принципы создания параллакс эффекта на примере с двумя слоями.

HTML

Как всегда, сперва Html разметка для нашего документа.

Для начала нам понадобится текст, который  обернем тегом <section>, а так же элемент в котором будет фоновое изображение (<div class=”bg”> </div>):

<div class=”bg”> </div>
<section>
<h1>Home page</h1>
<p>We are a fairly small, flexible design studio that designs for print and web. We work flexibly with clients to fulfil their design needs. Whether you need to create a brand from scratch, including marketing materials and a beautiful and functional website or whether you are looking for a design refresh we are confident you will be pleased with the results.</p><p>We offer the following services:</p>
<ul>
<li>Branding</li>
<li>Logos</li>
<li>Websites</li>
<li>Web applications</li>
<li>Web development – HTML5, CSS, jQuery</li>
<li>Content Management Systems</li>
<li>Responsive Web Design</li>
<li>Illustration</li>
<li>Business cards</li>
<li>Letterheads and compliment slips</li>
<li>Flyers</li>
<li>Mailers</li>
<li>Appointment cards</li>
</ul>
<h1>Sub page</h1>
<p>Before you choose us to take on your project you will probably want to know a bit more about us, so meet the team:</p>
<img alt="" src="http://lorempixum.com/500/600" /> <p>Ross has over 10 years experience in the industry. He is our Creative Director, digital designer, web designer and front-end developer. He is also pretty good with a sketchbook. Before starting the company Ross worked as a designer and studio manager for a design house who boasted a number of big name clients. Ross has brought his vast experience from this role to the work he does now.</p>
<p>Monica is Ross’ sister, our Art Director and specialises in graphic and print design. She has also worked with some big names and her designs have won her a number of industry awards.</p> <p>Rachel and Chandler are our Junior Designers. Rachel is a web designer with knowledge of HTML and CSS and supports Ross on projects. Chandler has just finished his Graphic Design degree and enjoys continuing to learn from Monica and building his experience.</p> <img alt="" src="http://lorempixum.com/500/600/sports" /> <p>Joey and Phoebe focus on bringing new business to the company. They have won a number of big clients recently and both also have qualifications in project management to ensure that the projects run smoothly from start to finish.</p>
</section>

Это необходимый минимум для построение параллакс эффекта. Так много текста необходимо для того чтобы страницу можно было прокручивать. Перейдем к CSS.

CSS

CSS для создания параллакса довольно прост, если понять как он действует. Для «фонового» div’а необходимо указать изображение и запретить его прокрутку, т.е. свойство position должно быть fixed. Ширина изображения — 100%, а вот высоту необходимо установить равной 300% для того чтобы  быть уверенным, что картинка не поместится в рамки экрана. Поместим картинку в левый верхний угол и установим z-index равным -1 чтобы картинка оставалась под текстом:

.bg {
  background: url('bg.jpg') repeat;
  position: fixed;
  width: 100%;
  height: 300%;
  top:0;
  left:0;
  z-index: -1;
}

Это все что необходимо для создания параллакса, осталось только немного стилизовать страницу (а можно и не стилизовать, это никак не влияет на parallax):

section {
  color: #fff;
  font-family: arial;
  width: 500px;
  margin: auto;
  line-height: 20px;
  font-size: 16px;
}

Попробуйте прокрутить страницу, и вы увидите, что текст прокручивается, а изображение неподвижно. Исправим это с помощью jQuery 🙂

jQuery

Нам необходимо, чтобы jQuery проверял насколько далеко страница прокручена и прокручивал фон с меньшей скоростью. Напишем функцию parallax и создадим переменную, которая будет хранить количество проскролленных пикселей:

function parallax(){
    var scrolled = $(window).scrollTop();

Теперь, для того чтобы скролл фона происходил с той же скоростью, что и скролл текста, установим свойство top равным отрицательному scrolled:

    $('.bg').css('top', -(scrolled) + 'px');
}

Однако смысл параллакса в том, чтобы крутить с разной скоростью, поэтому умножим значение, на 0.2, например:

function parallax(){
    var scrolled = $(window).scrollTop();
    $('.bg').css('top', -(scrolled * 0.2) + 'px');
}

Осталось только вызывать эту функцию каждый раз при прокручивании страницы:

$(window).scroll(function(e){
    parallax();
});

Наш параллакс эффект готов! Для изменения скорости прокрутки, нужно изменить коэффициент на который мы умножаем значение scrolled в функции parallax: больше коэффициент — больше скорость и наоборот.

Как видите, создать параллакс эффект не так сложно, как кажется. Конечно мы создали лишь простой пример, но на его основе можно создать более сложные эффекты.

Хочешь получать статьи на почту?

Подпишись на обновления!
* Ваш email не будет разглашен/продан. Вы сможете отписаться в любое время.

4 Комментария

  1. Fy:

    Спасибо за статью. Все просто и понятно.

  2. san:

    Круть для старта поучиться просто бомба! Огромное спасибо!

  3. Тимур:

    А как сделать parallax на слайдер точно как в dior. com (слайдер)

  4. Виктор:

    спасибо тебе умный человек! через тебя одного получилось синхронизировать существующий и твой jquery

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *