Компонент «Спойлеры»

Компонент «Спойлеры»

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

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

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

Расположение компонента

Файлы компонента находятся в папке src/components/layout/spollers, здесь вы найдете JS-файл компонента, HTML-файл с примером кода, а также файл SCSS для стилизации компонента.

Использование компонента

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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