Модуль «Прокрутка к нужному блоку». Плавная навигация по странице. «Чертоги Фрилансера» v3.0.0

Модуль «Прокрутка к нужному блоку». Плавная навигация по странице. «Чертоги Фрилансера» v3.0.0

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

Подключение функционала

[JS] В файле js/app.js раскомментировать строку flsScroll.pageNavigation();

Использование функционала

[HTML] К элементам навигации (пунктам меню) или к произвольному объекту добавляем HTML-атрибут data-goto , а в качестве значения указываем CSS селектор блока к которому нужно прокрутить:

<a href="#" data-goto=".имя класса блока" class="link">Пункт навигации</a>

<a href="#" data-goto="#id блока" class="link">Пункт навигации</a>

Если нужно, чтобы скролл учитывал шапку (не докручивал на высоту шапки, используется при фиксированных шапках), нужно добавить к объекту навигации атрибут data-goto-header :

<a href="#" data-goto-header data-goto=".имя класса блока" class="link">Пункт навигации</a>

Если нужно, чтобы скролл не докручивал блок на указанную высоту, необходимо добавить к объекту навигации атрибут data-goto-top , а в качестве значения указать число – необходимую высоту:

<a href="#" data-goto-top="30" data-goto="#id блока" class="link">Пункт навигации</a>

data-goto-top можно совмещать с data-goto-header , тогда значение data-goto-top прибавится к высоте шапки.

Добавление класса в текущий пункт навигации

Для включения функционала добавления класса подключаем модуль наблюдателя:

[JS] В файле js/app.js раскомментировать строку import ‘./libs/watcher.js’
[HTML] Для блоков к которым прокручивается страница добавляем атрибут data-watch со значением navigator :

<a href="#" data-goto=".some-section" class="link">Пункт навигации</a>
...
<section data-watch="navigator" class="some-section"></section>

После этого, при прокрутке к облаку (объекту) навигации, в соответствующий пункт навигации будет добавлен класс _navigator-active

Прокрутка к нужному блоку по хэшу (при открытии страницы)

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

Пример адресной строки и нужного блока:

https://code.site.ru/index.html#some-section
<section class="some-section">
...
</section>

Добавление функционала, плавная прокрутка на iOS

По умолчанию прокрутка выполняется методом scrollTo() с параметром behavior: “smooth” без применения дополнительных плагинов. Но это ограничивает функционал этого модуля – нельзя указать скорость прокрутки, а также могут возникнуть проблемы в некоторых версиях браузеров на iOS . Для решения всех проблем можно подключить дополнительный плагин SmoothScroll, сделать это можно в файле js/files/scroll/gotoblock.js, раскомментировав строку import SmoothScroll from ‘smooth-scroll’; дальнейшее переключение прокрутки на плагин произойдет автоматически.

При работе с плагином появляется возможность указать скорость прокрутки, для этого элемента навигации нужно добавить атрибут data-goto-speed и указать число, означающее количество миллисекунд за прокручиваемый (1000 = 1 секунда), по умолчанию 500.

<a href="#" data-goto-speed="1000" data-goto=".some-section" class="link">Пункт навигации</a>

Расположение и дополнительные данные

Функционал находится в js/files/scroll/scroll.js . Название функции pageNavigation() . Вспомогательный модуль прокрутки gotoblock находится в js/files/scroll/gotoblock.js . Модуль наблюдателя находится в файле js/libs/watcher.js .

Если в момент клика на пункт навигации было открыто меню Бургер, оно закроется автоматически.

Оставить комментарий

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

Что будем искать? Например,Человек

Мы в социальных сетях