Модуль «Спойлеры» «Чертоги Фрилансера» v3.0.0

Модуль «Спойлеры» «Чертоги Фрилансера» v3.0.0

Спойлер – это заглавие, при нажатии на которое под ним развертывается определенный контент.

Основные возможности

  1. Использование множества блоков со спойлерами
  2. Выключение/включение функционала на определенной ширине экрана
  3. Функция «аккордеон», когда в блоке может быть открыт только один спойлер
  4. Возможность закрытия по клику за пределами спойлера
  5. Возможность анимированного открытия
  6. Семантика и доступность

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

[HTML] В нужном месте вызвать снипет spollers (классы можно заменить нужными). Или вручную создать структуру с соответствующими дата-атрибутами. Обратите внимание, что добавление атрибута data-open для элемента details сделает спойлер активным (открытым).

Пример блока с двумя спойлерами:

<div data-spollers class="spollers">
	<details class="spollers__item">
		<summary class="spollers__title">
			Заголовок спойлера №1
		</summary>
		<div class="spollers__body">Контент спойлера №1</div>
	</details>
	<details class="spollers__item">
		<summary class="spollers__title">
			Заголовок спойлера №2
		</summary>
		<div class="spollers__body">Контент спойлера №2</div>
	</details>
</div>

[JS] В файле js/app.js раскомментировать строку flsFunctions.spollers();
[SCSS] (не обязательно) Если вы хотите сразу посмотреть на работу спойлеров и оставили классы, предложенные снипетом, вы можете раскомментировать строку @import «base/spollers»; в файле src/scss/base.scss это подключит базовые стили, которые можно отредактировать под свои потребности.

Убрать стандартный маркер элемента summary можно с помощью css-параметра list-style: none;

В момент инициализации (включения) функционала спойлера контент будет скрыт, а к элементу с атрибутом data-spollers будет добавлен класс _spoller-init

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

Выключение/включение функционала на определенной ширине экрана

Для того чтобы отключить/включить функционал спойлера на определенной ширине экрана, необходимо для атрибута data-spollers через запятую указать нужную ширину экрана и тип:

  • max (по умолчанию) — функционал включится на ширину меньше указанной
  • min — функционал включится на ширине больше указанной
<div data-spollers="768,min" class="spollers">
...
</div>

Включение режима “аккордеон”

Для того чтобы включить режим аккордеон, необходимо для элемента с атрибутом data-spollers добавить атрибут data-one-spoller

<div data-spollers data-one-spoller class="spollers">
...
</div>

Теперь при открытии спойлера другой открытый спойлер в блоке будет закрываться.

Управление скоростью анимации

Для того чтобы управлять временем анимации открытия/закрытия спойлера, необходимо для элемента с атрибутом data-spollers добавить атрибут data-spollers-speed , а в качестве значения указать время анимации в миллисекундах (по умолчанию 500).

<div data-spollers data-spollers-speed="1000" class="spollers">
...
</div>

Закрытие при клике вне спойлера

Если необходимо закрывать спойлер(ы) при клике вне блока (“на пустом месте”), следует добавить нужному заголовку(кам) атрибут data-spoller-close

<div data-spollers class="spollers">
	<details class="spollers__item">
		<summary data-spoller-close class="spollers__title">Заголовок спойлера</summary>
		<div class="spollers__body">Контент спойлера</div>
	</details>
</div>

Прокрутка к заголовку

Если необходимо прокрутить скролл до заголовка открытого спойлера, следует добавить нужному элементу (тег details) атрибут data-spoller-scroll

<div data-spollers class="spollers">
	<details data-spoller-scroll class="spollers__item">
		<summary class="spollers__title">Заголовок спойлера</summary>
		<div class="spollers__body">Контент спойлера</div>
	</details>
</div>

Есть возможность более тонких настроек. Например, если нужно чтобы скролл учел шапку сайта (когда она фиксирована), то следует добавить атрибут data-spoller-scroll-noheader .

Также, в самом атрибуте data-spoller-scroll можно дописать числовое значение, которое будет учтено при скроле:

<div data-spollers class="spollers">
	<details data-spoller-scroll="20" data-spoller-scroll-noheader class="spollers__item">
		<summary class="spollers__title">Заголовок спойлера</summary>
		<div class="spollers__body">Контент спойлера</div>
	</details>
</div>

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

Функционал находится в js/files/functions.js . Название функции spollers()

Дополнительные материалы

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

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

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

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