Дневник начинающего разработчика. Урок 3. Скролл или как отобразить кучу информации на экране

Скролл-эффекты – это тренд, возникший в веб-дизайне несколько лет назад и все еще набирающий обороты. В этой статье я попытаюсь рассказать о популярных разновидностях таких эффектов, привести несколько примеров реального использования и поделиться шикарным инструментом для комфортной работы с ними.

Мы будем называть scroll-эффектами любые сценарии и приемы, реализуемые на веб-странице, так или иначе связанные с направлением и/или позицией прокрутки этой страницы относительно окна браузера.

К сожалению, пока не существует никаких отраслевых стандартов по поводу именования различных видов скролл-эффектов. Поэтому давайте рассмотрим самые популярные из них и дадим им собственные, наиболее подходящие по смыслу названия.

Parallax (Параллакс).

Эффект движения слоев страницы с разной скоростью при скролле. Обычно, в соответствии с оптическим представлением параллакса, слои, находящиеся ближе к наблюдателю, должны двигаться быстрее слоев, находящихся на удалении.

Для справки, вот определение из википедии: “Паралла́кс (греч. παραλλάξ, от παραλλαγή, «смена, чередование») — изменение видимого положения объекта относительно удалённого фона, в зависимости от положения наблюдателя.”

Например, в этом демо надпись Parallax – ScRolling in the Deep движется медленнеe скролла вниз и плавно исчезает, при этом задний фон верхней части страницы движется вверх немного быстрее скролла.

Back to top (Вернуться вверх).

Приятная и полезная кнопка “Back to top” изначально скрыта, появляется только тогда, когда страница немного проскроллена вниз. Вот демо.

Sticky (Прилипание)

Суть техники заключается в том, что элемент при скролле ведет себя как position: relative относительно своего родителя, пока его верхняя граница не достигнет верхнего края окна (viewport-a). При дальнейшем скролле вниз элемент ведет себя как position: static, будто отвязывается от родителя и “прилипает” к границе окна. Вот, к примеру, демо, в котором верхняя панель навигации реализована c эффектом “sticky”.

Этой техникой также можно пользоваться для “прилепливания” элементов к нижней, левой или правой границе экрана, в зависимости от позиции и направления скролла.

Надо сказать, что СSS свойство position: sticky (позволяет с легкостью реализовывать подобные эффекты без применения javascript) описано в черновике спецификации CSS Positioned Layout Module Level. Но вот с поддержкой браузерами пока совсем туго.

Reversed sticky (Реверсное прилипание).

Эффект, по сути, похож на предыдущий, но элемент прячется за границей окна при скролле вниз и появляется только при обратном скролле (вверх). Будет намного легче понять, о чем идет речь, немного поигравшись с демо.

Progress bar (Индикатор прокрутки).

Разновидности сценариев для визуализации текушего положения пользователя на странице при скролле. Например, в этом демо есть веселый индикатор прокрутки внизу страницы.

Accordion (Аккордеон).

Этот сценарий подразумевает последовательное применение stcicky-эффекта к заголовкам разделов страницы при скролле. А вот и демо

Menu Spy (Сопровождающее меню).

Этот сценарий хорошо известен под именем scroll spy в twitter bootstrap. Он подразумевает подсветку пунктов меню навигации, в зависимости от положения скролла, например, как в этом демо.

Staging (Сцена).

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

Общие проблемы при реализации любых сценариев со скролл-эффектами.

Во-первых, при написании скролл-эффектов нужно учитывать большое количество факторов и величин:

  • Размер всего документа.
  • Размеры и позиции элементов, участвующих в сценарии, а также в некоторых случаях и их контейнеров.
  • Размер и текущее положение видимой части документа (viewport) при скролле.
  • Направление скролла.
  • Адаптация при изменении размеров окна с отзывчивым (responsive) дизайном

Во-вторых, математические вычисления для описания сценариев получаются довольно массивными, а их сложность возрастает с ростом количества эффектов.

В-третьих, на мобильных девайсах все работает плохо и с тормозами. Javascript изначально работает медленнее. В добавок к этому, мобильные браузеры блокируют выполнение javascript во время скролла.

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

Что такое инерция? Пример жизненных наблюдений

Рассмотрим случаи, когда какое-нибудь тело на начальном этапе эксперимента уже пребывает в движении. Позже мы увидим, что уменьшение скорости и остановка тела не могут происходить самовольно, ведь причиной тому является действие на него другого тела.

Вы, наверное, не единожды наблюдали, как пассажиры, которые едут в транспорте, вдруг наклоняются вперед во время торможения или прижимаются на бок на крутом повороте. Почему? Объясним далее. Когда, к примеру, спортсмены пробегают определенную дистанцию, они пытаются развить максимальную скорость. Пробежав финишную черту, уже можно и не бежать, однако нельзя резко остановиться, а поэтому спортсмен пробегает еще несколько метров, то есть совершает движение по инерции.

что такое инерция

Что такое Scroolly?

Scroolly – это jquery-плагин, который предоставляет Вам простой синтаксис для создания и конфигурирования скролл-эффектов. Он прост в освоении, довольно легковесный и позволяет создавать сколь угодно сложные сценарии. Нужно сказать, что все демо, которые были приведены выше, реализованы с помощью Scroolly!

Немаловажным фактом является то, что автор плагина не какой-то заморский дядька, а самый настоящий минский парень Борис Мосунов. Scrooly распространяется под свободной лицензией и находится здесь: github.com/chayka/jQuery.Scroolly

Сила инерции

Это довольно многозначное понятие, а поэтому попытаемся как можно более детально его рассмотреть. Приведем пример. Вы спокойно стоите в автобусе. Внезапно он начинает двигаться, а значит, набирает ускорение. Вы мимо воли отклонитесь назад. Но почему? Кто вас потянул? С точки зрения наблюдателя на Земле (инерциальная система отсчета) вы остаетесь на месте, при этом выполняется 1-ый закон Ньютона. С точки зрения наблюдателя в самом автобусе, вы начинаете двигаться назад, будто под какой-либо силой. На самом деле ваши ноги, которые связаны силами трения с полом автобуса, поехали вперед вместе с ним, а вам, теряя равновесие, пришлось падать назад. Таким образом, для описания движения тела в неинерциальной системе отсчета необходимо вводить и учитывать дополнительные силы, что действуют со стороны связей тела с такой системой. Эти силы и есть силы инерции.

Необходимо учесть, что они фиктивны, ибо нет ни единого тела либо поля, под действием которого вы начали двигаться в автобусе. Законы Ньютона на силы инерции не распространяются, однако их использование наряду с «настоящими» силами позволяет описывать движение у произвольных неинерциальных систем отсчета при помощи различных инструментов. В этом состоит весь смысл ввода сил инерции.

Итак, теперь вы знаете, что такое инерция, момент инерции и инерциальные системы, силы инерции. Двигаемся далее.

Правила, их границы и области действия.

Итак, в процессе скролла, в зависимости от положения прокрутки сраницы, нам нужно применять к элементам некоторые правила. Для этого необходимо определить границы действия этих правил.

Чтобы было проще понять о чем идет речь, приведу абстрактный пример:

  1. Нужно плавно показать и плавно скрыть некоторый элемент, когда при скролле он будет входить в область видимости и выходить из нее. Элемент должен начать появляться после того, как его верхняя кромка будет на 100px выше нижней границы видимой области окна и полностью появится, когда его нижняя кромка будет на 100px выше нижней границы видимой области окна. Та же логика с исчезновением, только в симметрично обратном порядке.
  2. Элемент нужно повернуть на 180° во время скролла, пока он будет находится в зоне ±30% от центра видимой зоны.

Чертовски сложно воспринимается на слух, не правда ли? Лучше посмотрим на демо.

Давайте договоримся, что мы будем называть видимую область документа словом “viewport”. К сожалению, я не могу найти короткий русский аналог этого слова :)

В итоге, здесь мы можем выделить 3 области действия правил c 6-ю границами. Давайте опишем их:

  1. Точка, находящаяся на 100px ниже верхней границы элемента, совпадает с нижней границей viewport (элемент начинает появляться)
  2. Точка, находящаяся на 100px выше верхней границы элемента, совпадает с нижней границей viewport (элемент заканчивает появляться)
  3. Точка, находящаяся на 30% ниже центра viewport, совпадает с центром элемента (элемент начинает поворот)
  4. Точка, находящаяся на 30% выше центра viewport, совпадает с центром элемента (элемент заканчивает поворот)
  5. Точка, находящаяся на 100px ниже верхней границы элемента, совпадает с верхней границей viewport (элемент начинает исчезать)
  6. Точка, находящаяся на 100px выше верхней границы элемента, совпадает с верхней границей viewport (элемент заканчивает исчезать)

А теперь подумайте, с чего Вы начали бы описывать всю эту логику? Даже в таком простом сценарии с одним элементом в вычислениях участвуют размер документа, размер viewport, положение viewport, размер элемента, положение элемента, положение скролла… черт возьми, как же не запутаться?

Scroolly спешит на помощь.

Вся прелесть scroolly заключается в том, что каждая из этих границ областей действия правил задается с помощью вот такого наглядного синтаксиса:

  1. el-top = vp-bottom — 100px (элемент начинает появляться)
  2. el-bottom = vp-bottom — 100px (элемент заканчивает появляться)
  3. el-center = vp-center + 30vp (элемент начинает поворот)
  4. el-center = vp-center — 30vp (элемент заканчивает поворот)
  5. el-top = vp-top + 100px (элемент начинает исчезать)
  6. el-bottom = vp-top + 100px (элемент заканчивает исчезать)

А весь сценарий описывается так:

$(‘.my-element’).scroolly([ { from: ‘el-top = vp-bottom — 100px’, to: ‘el-bottom = vp-bottom — 100px’, cssFrom:{opacity:’.0′}, cssTo:{opacity:’1′} }, { from: ‘el-center = vp-center + 30vp’, to: ‘el-center = vp-center — 30vp’, cssFrom:{‘transform’: ‘rotate(0deg)’}, cssTo:{‘transform’: ‘rotate(180deg)’} }, { from: ‘el-top = vp-top + 100px’, to: ‘el-bottom = vp-top + 100px’, cssFrom:{opacity:’1′}, cssTo:{opacity:’.0′} } ]);

Где vp – viewport, а el – элемент. Также можно пользоваться абстракциями doc для документа и con для контейнера элемента. А теперь об этом подробнее и с картинками…

У каждого из них есть опорные точки, которые можно использовать в синтаксисе scroolly:

viewport: vp-top, vp-center, vp-bottom элемент: el-top, el-center, el-bottom контейнер: con-top, con-center, con-bottom документ: doc-top, doc-center, doc-bottom

Вот несколько примеров описания областей действия правил c помощью синтаксиса scrolly:

Как отключить инерционную прокрутку на Mac

Совет

: Если вы предпочитаете пользоваться мышкой «Magic Mouse» от компании Apple вместо встроенного трекпада или отдельного трекпада «Magic Trackpad», то выберите кнопку «Параметры мыши» вместо выше указанной кнопки.

5.Нажмите на всплывающее меню рядом с панелью «Скорости прокрутки», а затем сделайте свой выбор относительно того, что будет происходить, когда вы прекращаете движение мышки или пальца на сенсорной панели:

  • С помощью инерционной прокрутки,
    ползунок прокрутки приходит к постепенной остановке.
  • Безпомощиинерционной прокрутки,
    ползунок останавливается незамедлительно.

Совет

: Перетащите ползунок панели «Скорости прокрутки» для регулировки скорости прокрутки, при которой вы просматриваете документы и содержание системных окон с помощью трекпада.

Чтобы выключить прокрутку, снимите флажок для соответствующей опции перед всплывающим окном «Прокрутка».

6. Нажмите на кнопку «OK

», чтобы закрыть данное меню.

7. Закройте окно «Системных настроек», чтобы сохранить и применить выбранные опции.

Отключение инерционной прокрутки делает работу с контентом на вашем компьютере Mac похожей на работу с контентом на ПК под управлением Windows в том смысле, что, когда ваш палец перестаёт двигаться по поверхности сенсорной панели трекпад или по поверхности мышки Magic Mouse, то движение ползунка окна прокрутки прекращается немедленно. Мышки, у которых имеется колесо прокрутки или отсутствует сенсорная поверхность мультитач, как у мышки Magic Mouse, не поддерживает инерционную прокрутку в MacOS.

Аккредитованный биограф Стива Джобса, Уолтер Айзексон утверждает, что инерционный скроллинг для мультисенсорных экранов был создан специалистом по дизайну элементов интерфейса от компании Apple Бас Ординг. Понимая важность инерционной прокруткой, Джобс предупредил представителей не пытаться копировать эту функцию, так как она быстро стала привлекательной частью оригинального программного обеспечения устройства iPhone, а затем и MacOS.

  • Дата обновления:
    20 Мар 2018
  • Всего оценок:
    4
  • Средняя оценка:
    3
  • Поделиться:
  • Больше репостов — чаще обновления!

Информация о последнем обновлении:

Обновлено 20.03.2018:

  • адаптация для 1.0;

Одно из самых частых действий пользователей в игре World of Tanks, помимо стрельбы и движения танка — переключение режимов прицеливания. Не удивительно, что и для этого игрового момента существует возможность настройки с помощью модов.

Приближение прицела World of Tanks контролируется поворотом колесика мыши во всех трех режимах прицеливания — аркадном, снайперском и стратегическом (артиллерийском, для САУ). Переход между режимами подразумевается достаточно плавным, но в таком способе переключения есть некоторые неудобства. Особенно они заметны при динамичном ближнем бое и критичны для любителей активно атаковать на быстрых, маневренных машинах, т.е. при переходе из снайперского режима в аркадный и обратно. Аркадный режим позволяет «оглядываться» и контролировать ситуацию в ближайших окрестностях, снайперский — рассматривать и целиться в удаленные на несколько сотен метров предметы. Одно лишнее движение колесиком мыши и вы резко переключаетесь в другой режим прицеливания. Это может сбить с толку, помешать сделать правильный выстрел и, в конечном итоге, стоить победы.

Мод No sniper scroll решает эту проблему, отключая переход между снайперским и аркадным режимом прицеливания по колесику мыши. Это требует некоторого привыкания, но впоследствии вы «на автомате» будете переходить в нужный режим по клавише Shift. Это позволит вам сохранять прицеливание в снайперском режиме и «выглядывать» в аркадный, чтобы осмотреться и оценить ситуацию. Особенно полезным этот мод может быть владельцам пт-сау с малыми углами горизонтальной наводки орудия. В сочетании с noscroll рекомендуем использовать , который расширяет поле зрения в этом режиме.

Документация

Если Вас заитересовал плагин scroolly обязательно посмотрите официальную документацию. А она существует, и даже представлена в 2-х вариантах:

  1. Для ленивых и нетерпеливых – github.com/chayka/jQuery.Scroolly/wiki/Short-Story
  2. Для неторопливых и вдумчивых – github.com/chayka/jQuery.Scroolly/wiki/Long-Story

Ну и самое главное: обязательно посмотрите видео с нашей конференции 4front, на котором Борис сам захватывающе рассказал про скролл-эффекты в целом и scroolly в частности.

scroolly

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями: