Галерея
<sf-gallery> показывает упорядоченный набор материалов — изображения,
карточки, макеты — слайдером в потоке страницы и в модальном окне на весь
экран. Оба представления держат одно текущее положение. Галерея собрана из
Smart-слайдера и
модального окна; для ленты без
увеличения достаточно одного слайдера.
Пример
Применение
Материалы
Каждый значимый дочерний элемент с slot="slide" — один материал. Пробелы и
комментарии между ними не считаются. Составную карточку — изображение,
подпись, ссылку — держите в одном корневом элементе, например figure:
галерея не собирает карточку из соседних элементов.
Подпись и альтернативный текст принадлежат содержимому. Компонент не
придумывает их по имени файла: у каждого изображения должен быть свой alt.
Только встроенный просмотр
lightbox="false" оставляет галерею в потоке страницы, без модального окна.
Так делайте, когда увеличение не нужно или материалы уже занимают крупную
область. inline="false", наоборот, убирает встроенный слайдер, если окно
включено: галерея открывается только в модальном окне из скрипта.
Галерея из ссылок
Готовую сетку миниатюр не нужно переписывать в <sf-gallery>. Отметьте
ссылки одинаковым data-sf-gallery: нажатие на любую из них открывает
модальную галерею из всех ссылок группы, начиная с нажатой. Источник
берётся из data-sf-src, href или вложенного изображения, подпись — из
data-caption, title или alt изображения.
Параметры такой галереи задаются на ссылках с префиксом:
data-sf-gallery-loop, data-sf-gallery-width, data-sf-gallery-title и
другие имена атрибутов галереи.
Слайдер и модальное окно
arrows, dots, thumbs и loop меняют способ листания, не меняя набор
материалов; space-between и speed — расстояние между слайдами и скорость
перехода. Модальное окно настраивается атрибутами галереи с теми же именами,
что у модального окна: title, text, show-header, show-close,
close-on-esc, close-on-overlay, position, fullscreen, width,
height. Внешний вид частей задают root-class, inline-class,
lightbox-class, slide-class и классы частей окна — утилитами Framework.
Текущее положение и события
Положение нумеруется с единицы. Атрибут current задаёт начальный материал;
goTo(n), next() и prev() переходят к другому, open(n) открывает
модальное окно на нужном материале, close() и toggle() закрывают и
переключают его. Нажатие на материал во встроенном слайдере открывает окно
на этом материале.
Смена материала отправляет sf-change, открытие и закрытие окна —
sf-open и sf-close. Все три всплывают; в event.detail приходят
current и total, а у sf-change ещё previous и from — откуда пришла
смена: inline, lightbox или api.
const gallery = document.querySelector('sf-gallery');
gallery.addEventListener('sf-change', (event) => {
counter.textContent = `${event.detail.current} из ${event.detail.total}`;
});
gallery.open(3);
Вложенные слайдеры не хранят своего положения: не исправляйте его через их
API, а вызывайте методы галереи. getInlineSlider(), getLightboxSlider()
и getModal() возвращают вложенные элементы для чтения их состояния.
Доступность
- Задайте
title: он становится заголовком модального окна и называет диалог. По умолчанию заголовок английский — «Gallery». - Материал встроенного слайдера, который открывает окно, получает роль кнопки
и попадает в порядок
Tab;Enterи пробел открывают окно на нём. Его имя — текст материала, поэтому у изображения нужен содержательныйalt, а у карточки — подпись. - В модальном окне фокус остаётся внутри,
Escapeзакрывает окно, если не заданclose-on-esc="false". Листают стрелки слайдера, у которых есть свои доступные имена. - Для галереи из ссылок отмечайте именно ссылки, а не изображения: ссылка доступна с клавиатуры, изображение — нет.
- При системной настройке уменьшения движения слайды сменяются без анимации.
Справочник API
Раздел собран из манифеста компонента выпуска ui-106d5901f8c3 и обновляется вместе с выпуском. Чтобы исправить описание, исправьте манифест.
Каждому атрибуту соответствует свойство элемента с тем же именем в camelCase: search-placeholder — searchPlaceholder. Свойство атрибута template называется templateName.
| Тег | <sf-gallery> |
| Назначение | Упорядоченная коллекция медиа во встроенном Slider с необязательным лайтбоксом Modal, в котором находится второй Slider. Галерея хранит текущий слайд (нумерация с единицы) и держит на нём оба представления. |
| Контракт | smart.gallery, версия 1.0.0 |
| Поставка | выпуск Framework ui-106d5901f8c3 |
| Жизненный цикл | экспериментальный: API может меняться между выпусками |
| Готовность | описан: манифест и сценарий есть, продуктовой приёмки нет |
| Заготовка до прихода кода | сервер пишет data-sf-skeleton="block"; своего скелетона при загрузке данных нет (Заготовка до прихода кода) |
Атрибуты
template—string, по умолчаниюdefault.modal-id—string, по умолчанию пусто.title—string, по умолчаниюGallery.text—string, по умолчанию пусто.open—boolean, по умолчаниюfalse.current—number, по умолчанию1.inline—boolean, по умолчаниюtrue.lightbox—boolean, по умолчаниюtrue.arrows—boolean, по умолчаниюtrue.dots—boolean, по умолчаниюfalse.thumbs—boolean, по умолчаниюtrue.loop—boolean, по умолчаниюfalse.space-between—number, по умолчанию12.speed—number, по умолчанию450.button-type—string, по умолчаниюprimary.button-size—string, по умолчанию1.dots-type—string, по умолчаниюprimary-dark.dots-size—string, по умолчанию2.thumbs-class—string, по умолчанию пусто.thumb-class—string, по умолчанию пусто.slide-class—string, по умолчанию пусто.inline-class—string, по умолчанию пусто.lightbox-class—string, по умолчанию пусто.overlay—boolean, по умолчаниюtrue.show-header—boolean, по умолчаниюtrue.show-close—boolean, по умолчаниюtrue.close-on-esc—boolean, по умолчаниюtrue.close-on-overlay—boolean, по умолчаниюtrue.preserve-scroll-gap—boolean, по умолчаниюtrue.position—string, по умолчаниюcenter, значения:center,left,right,top,bottom.fullscreen—boolean, по умолчаниюfalse.width—string, по умолчанию пусто.height—string, по умолчанию пусто.blur—boolean, по умолчаниюfalse.blur-type—string, по умолчаниюmedium, значения:none,small,medium,large.overlay-class—string, по умолчанию пусто.close-class—string, по умолчанию пусто.surface-class—string, по умолчанию пусто.surface-padding—string, по умолчанию пусто.panel-class—string, по умолчанию пусто.header-class—string, по умолчанию пусто.body-class—string, по умолчанию пусто.content-class—string, по умолчанию пусто.footer-class—string, по умолчанию пусто.
Прежние имена:
| Имя | Прежнее имя | Состояние | Убирается после |
|---|---|---|---|
lightbox-class |
root-class |
работает, отмечается в SF.deprecations |
2026-12-01 |
Методы
getModal()— возвращаетobject|null. Возвращает sf-modal лайтбокса или null, если его нет.getInlineSlider()— возвращаетobject|null. Возвращает встроенный sf-slider или null до отрисовки.getLightboxSlider()— возвращаетobject|null. Возвращает sf-slider лайтбокса или null, если его нет.open(index?: number)— возвращаетobject. Переходит к указанному слайду (нумерация с единицы), если передан индекс, устанавливает open и открывает модальное окно лайтбокса. Возвращает элемент.close()— возвращаетobject. Снимает open и закрывает модальное окно лайтбокса. Возвращает элемент.toggle(index?: number)— возвращаетobject. Вызывает close(), если открыто, иначе open(index). Возвращает элемент.goTo(index: number)— возвращаетobject. Переходит к слайду по номеру с единицы, ограничивая его числом слайдов, отражает его в атрибуте current, синхронизирует оба слайдера и отправляет sf-change, если слайд сменился. Возвращает элемент.next()— возвращаетobject. goTo(current + 1); останавливается на последнем слайде. Возвращает элемент.prev()— возвращаетobject. goTo(current - 1); останавливается на первом слайде. Возвращает элемент.
События
Все события приходят на сам элемент и всплывают. Общие события базового элемента перечислены в главе Жизненный цикл → Этапы.
sf-change—detail:{ component?: any, tagName?: string, template?: string, previous?: number, current?: number, total?: number, from?: any }. Текущий слайд изменился через API или любой из слайдеров. Всплывает и с composed: true.sf-close—detail:{ component?: any, tagName?: string, template?: string, current?: number, total?: number }. Модальное окно лайтбокса закрылось. Всплывает и с composed: true.sf-open—detail:{ component?: any, tagName?: string, template?: string, current?: number, total?: number }. Модальное окно лайтбокса открылось. Всплывает и с composed: true.
Доступность
- Доступное имя: рекомендуется.
- Клавиши:
Tab. - Фокус: Сохраняет видимый фокус на активном элементе управления.
Минимальная разметка
<sf-gallery></sf-gallery>
Источник
simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/gallerysimai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/rule/rule.json#name=cl-gallery
См. также
- Smart-слайдер — лента материалов без модального окна.
- Модальное окно — окно, в котором открывается галерея.