К содержанию

Навигация

Флаг

Флаг показывает страну картинкой: в телефонном поле, списке стран, рядом с ценой или адресом. Берите его вместо флага-эмодзи: эмодзи рисует системный шрифт, и в одних системах флаг выглядит иначе, а в других (Windows) вместо него стоят две буквы. Картинки набора выглядят одинаково везде.

Пример

Разметка

Минимальную разметку показывает пример выше: пустой <span class="sf-flag sf-flag--rect" data-country="ru">.

  • data-country — код страны из двух букв по ISO 3166-1 alpha-2, регистр не важен. Скрипт вставляет в элемент картинку <img>.
  • Класс формы sf-flag--rect или sf-flag--circle выбирает файл набора и пропорции; без него скрипт берёт прямоугольник.
  • data-alt задаёт картинке текстовую альтернативу; без него флаг декоративный (см. «Доступность»).
  • data-lazy="false" загружает файл сразу. По умолчанию файл грузится, когда флаг подходит к экрану: длинный список стран не тянет все файлы ради видимых.
  • data-flag-base на элементе или любом предке задаёт свой набор. Он повторяет раскладку набора Framework: <база>/rect/<код>.svg, <база>/circle/<код>.svg и <база>/index.json со списками кодов каждой формы. Без атрибута путь берётся из рантайма Framework.

Варианты

Форма

sf-flag--rect — прямоугольник 28×20, форма по умолчанию для полей, списков и таблиц. sf-flag--circle — круг 24×24 рядом с аватарами, где важнее общая форма. Круглый флаг — отдельный рисунок, а не обрезанный прямоугольник: у Непала сохраняется форма полотнища, у Сингапура — полумесяц со звёздами. Поэтому форму выбирает класс, а не border-radius. Если у кода нет файла нужной формы, скрипт показывает другую форму и меняет класс.

В каждой форме набора 247 кодов. 37 из них построены из flag-icons (лицензия MIT) и приведены к палитре набора; их круглые версии вырезаны из прямоугольных. Уведомление об авторстве лежит в flags/index.json компонента.

sf-flag--rect
sf-flag--circle

Размер

Высоту задаёт переменная --sf-flag--size (по умолчанию var(--sf-b8)), ширина считается из неё по пропорциям формы. Задайте переменную на элементе или в своём слое.

Состояния

Без картинки

Пока файл не загружен или код не задан, элемент держит размер и показывает нейтральную подложку: строка не прыгает, когда картинка приходит.

без data-country
без data-country

Доступность

  • Без data-alt картинка получает aria-hidden="true" и пустой alt: экранный диктор её пропускает. Так правильно, когда название страны или код написаны рядом.
  • data-alt с названием страны задавайте, только если картинка несёт смысл сама, например рядом с телефонным кодом.
  • Флаг не обозначает язык: у одного языка много стран, в одной стране бывает несколько языков. В переключателе языка рядом с флагом пишите название языка на этом языке (lang на подписи).
  • Скругление и тонкая рамка следуют теме: рамка цвета --sf-outline-variant не даёт белым флагам слиться со страницей.
  • Deutsch
  • Français
  • +81

JavaScript

Скрипт подключает флаги при загрузке страницы и флаги, добавленные позже. Объект SF.Flag появляется вместе со скриптом компонента; Loader подключает его, когда находит на странице .sf-flag. Событий компонент не отправляет.

  • SF.Flag.render(element) — перерисовывает флаг. Смену data-country или формы скрипт сам не отслеживает: после неё вызовите render.
  • SF.Flag.mount(element) и SF.Flag.mountAll(root) — подключают флаг или все флаги внутри root с учётом ленивой загрузки.

Имя SF.flag указывает на тот же объект.

JavaScript
const flag = document.querySelector('#phone-country');
flag.dataset.country = 'de';
SF.Flag.render(flag);

Классы

Что Классы
Блок sf-flag
Модификаторы sf-flag--circle, sf-flag--rect

Классы и переменные собраны из CSS выпуска и обновляются вместе с ним.

Переменные

Компонент читает свои переменные, а модификаторы задают им значения; таблица показывает, из чего складывается вид. Переменные компонента — его внутренняя проводка, а не поверхность настройки: их имена и устройство могут меняться. Вид проекта меняют общие токены, а глубокий вид Smart-компонента — его шаблон (см. Переменные компонента). Значение по умолчанию — из базового правила блока (.sf-flag); переменную без него задают только модификаторы.

Переменная По умолчанию Задаёт
--sf-flag--height var(--sf-flag--size, var(--sf-b8)) height, block-size, width, inline-size
--sf-flag--outline-color var(--sf-outline-variant) outline
--sf-flag--radius var(--sf-radius--ui) border-radius

См. также

Поиск по документации

Введите минимум 2 символа

    Настройки

    Тема
    Размер шрифта
    Ширина страницы