Простая техника эффекта параллакса
Эффект параллакса - очень интересная техника. При прокручивании фоновое изображение перемещается медленнее чем, содержание, а в результате получается иллюзия 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-04-22 » Комментирование кода и генерация документации в PHP
- 2024-04-22 » SEO в России и на Западе: в чем основные отличия
- 2024-04-22 » SEO для международного масштабирования
- 2024-04-22 » Как использовать XML-карты для продвижения сайта
- 2024-04-22 » Цифровой маркетинг: инструменты для продвижения и рекламы в 2024 году
- 2024-04-22 » Что такое CSS-модули и зачем они нам?
- 2024-04-17 » 23 сервиса для эффективного экспресс-аудита любого сайта
- 2024-04-08 » Яндекс переходит на новую версию Wordstat
- 2024-04-08 » Яндекс интегрировал в свой облачный сервис эмпатичную нейросеть
- 2024-04-08 » Новая версия нейросети Claude превзошла по мощности аналоги Google и OpenAI
- 2024-04-08 » Как пользоваться GPT 4 и Claude бесплатно и без VPN
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
Каждый человек имеет право на собственное мнение — при условии, что оно совпадает с нашим Шоу Джордж Бернард - 1856-1950) - английский писатель. В своем творчестве ниспровергал догматизм и предвзятость, традиционность представлений |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.