Простая техника эффекта параллакса
Эффект параллакса - очень интересная техника. При прокручивании фоновое изображение перемещается медленнее чем, содержание, а в результате получается иллюзия 3D пространства. В данном уроке мы продемонстрируем простой и эффективный способ получить замечательный эффект.
Разметка
Данная техника базируется на управлении скоростью перемещения фонового изображения. Создадим разметку HTML, содержащую две секции с атрибутами "data-type"
и "data-speed"
. Назначение атрибутов раскроется чуть позже:
<section id="home" data-type="background" data-speed="10"> </section> <section id="about" data-type="background" data-speed="10"> </section>
Теги <section>
с атрибутами data-type
и data-speed
позволяют сделать разметку простой и понятной.
В соответствии со спецификацией любые атрибуты, начинающиеся на data-
будут обрабатываться как хранилище частных данных. Дополнительно, они не оказывают влияния на шаблон.
Так как нам нужно управлять скоростью прокручивания фоновых изображений, то для ключевых параметров мы будем использовать data-type="background"
и data-speed="10"
.
Затем добавим тег <article>
в каждый тег <section>
.
<section id="home" data-type="background" data-speed="10" class="pages"> <article>Абсолютное позиционирование</article> </section> <section id="about" data-type="background" data-speed="10" class="pages"> <article>Простой эффект параллакса</article> </section>
Мы будем прокручивать фон тега <section>
медленнее, чем его содержание, то есть <article>
. Таким образом создается иллюзия параллакса.
CSS
Прежде, чем перейти к магии jQuery добавим фоновые изображения для каждого элемента <section>
в коде CSS.
#home { background: url(home.jpg) 50% 0 repeat fixed; min-height: 1000px; } #about { background: url(about.jpg) 50% 0 no-repeat min-height: 1000px; }
И определим стили для остальных элементов нашей демонстрационной страницы.
#home { background: url(home-bg.jpg) 50% 0 repeat fixed; min-height: 1000px; height: 1000px; margin: 0 auto; width: 100%; max-width: 1920px; position: relative; } #home article { height: 458px; position: absolute; text-align: center; top: 150px; width: 100%; } #about { background: url(about-bg.jpg) 50% 0 repeat fixed; min-height: 1000px; height: 1000px; margin: 0 auto; width: 100%; max-width: 1920px; position: relative; -webkit-box-shadow: 0 0 50px rgba(0,0,0,0.8); box-shadow: 0 0 50px rgba(0,0,0,0.8); } #about article { height: 458px; position: absolute; text-align: center; top: 150px; width: 100%; }
Магический код
Используем jQuery. Начнем со стандартного метода document.ready()
, чтобы быть в уверенности о загрузке страницы и ее готовности к манипуляциям.
$(document).ready(function(){ });
Теперь нужно внимание. Первое, что здесь происходит - итерация по всем элементам <section>
с атрибутом data-type="background"
на странице.
$(document).ready(function(){ $('section[data-type="background"]').each(function(){ var $bgobj = $(this); // Назначаем объект }); });
В функцию .each()
добавим другую функцию .scroll()
, которая вызывается в момент начала прокрутки.
$(window).scroll(
function
() {
});
Нужно определить на сколько пользователь прокрутил страницу, и затем разделить полученное значение на величину, определяемую в атрибуте data-speed
.
var yPos = -($window.scrollTop() / $bgobj.data('speed'));
$window.scrollTop()
- получаем текущее значение прокрутки сверху. $bgobj.data('speed')
ссылается на атрибут data-speed
в разметке. yPos
- окончательное значение, которое используется для прокрутки. Однако, используется отрицательное значение, так как фон смещается в обратном направлении по отношению к прокрутке пользователя.
В нашем примере атрибут data-speed
имеет значение 10. Предположим, что окно браузера прокручивается на 57px
. Это означает, что 57px
делится на 10
= 5.7px
.
// Собираем положение фона var coords = '50% '+ yPos + 'px'; // Смещаем фон $bgobj.css({ backgroundPosition: coords });
Теперь надо собрать все данные в одно значение. Чтобы сохранить горизонтальное положение фона статичным, мы используем значение 50%
для его свойства xPosition
. Затем добавляем yPos
в качестве значения свойства yPosition
, а затем присваиваем координаты фону <section>
: $bgobj.css({ backgroundPosition: coords });
.
В окончательном виде код будет выглядеть так:
$(document).ready(function(){ $('section[data-type="background"]').each(function(){ var $bgobj = $(this); // Назначаем объект $(window).scroll(function() { var yPos = -($window.scrollTop() / $bgobj.data('speed')); // Собираем значение координат фона вместе var coords = '50% '+ yPos + 'px'; // Смещаем фон $bgobj.css({ backgroundPosition: coords }); }); }); });
Фиксатор для IE
Остается один момент: старые версии IE не могут вывести теги <section>
и <article>
. Дело легко поправить, мы будем использовать стандартное решение для создания элементов, которое магическим образом заставит браузер распознавать теги HTML5.
// Создаем элементы для IE document.createElement("article"); document.createElement("section");
Дополнительно мы используем файл сброса CSS, чтобы все браузеры выводили страницу одинаково.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/qU-1nZarMHI/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
- 2024-05-27 » Подборка сервисов для расшифровки аудио в текст
- 2024-05-27 » PostgreSQL 16. Изоляция транзакций. Часть 2
- 2024-05-06 » Как настраивать конверсионные стратегии: работа над ошибками
- 2024-04-22 » Комментирование кода и генерация документации в PHP
- 2024-04-22 » SEO в России и на Западе: в чем основные отличия
- 2024-04-22 » SEO для международного масштабирования
- 2024-04-22 » Как использовать XML-карты для продвижения сайта
Полезнее знать несколько мудрых правил, которые всегда могли бы служить тебе, чем выучиться многим вещам, для тебя бесполезным Сенека Луций Анней - (1 до н. э. / 1 н. э.- 65 н. э.) - римский государственный деятель, писатель, философ |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.