Ссылка
Ссылка ведёт на другую страницу, раздел страницы или файл. Для действия на текущей странице — сохранить, отправить, открыть окно — берите кнопку.
Пример
Разметка
Минимальную разметку показывает пример выше: нативный <a> с классом
sf-link, настоящим адресом в href и подписью в sf-link-content.
- Блок
sf-link— строчный flex-контейнер: ссылку можно ставить внутрь абзаца, длинная подпись переносится внутри неё. - Подпись лежит в
sf-link-content. CSS читает и написаниеsf-link__content; в разметке используйтеsf-link-content. - Иконка —
<i class="sf-icon sf-link-icon" aria-hidden="true">до или после подписи; её размер равен высоте строки ссылки. Написаниеsf-link__iconCSS тоже читает. - Скрипта у ссылки нет: переход выполняет браузер.
Варианты
Иконка
Иконка уточняет направление или тип перехода: стрелка назад — до подписи, стрелка вперёд или значок внешнего ресурса — после. Подпись остаётся обязательной: иконка её не заменяет.
Состояния
Наведение и нажатие убирают подчёркивание и меняют цвет на роли
--sf-link-hover и --sf-link-active; посещённая ссылка берёт цвет
--sf-link-visited. Эти состояния компонент показывает сам.
Недоступна
Если переход временно невозможен, уберите href и добавьте
aria-disabled="true" (или класс disabled): ссылка теряет подчёркивание и
берёт цвет недоступного текста. Без href элемент <a> не получает фокус и
не переходит. Рядом объясните, почему переход недоступен.
Фокус
При переходе клавишей Tab ссылка получает кольцо фокуса по :focus-visible.
В примере фокус показан классом focus-visible, который CSS компонента
читает наравне с псевдоклассом.
Доступность
- Подпись называет цель перехода: «Описание тарифов», а не «Здесь» или «Подробнее». Экранный диктор часто зачитывает ссылки списком, без окружающего текста.
- Декоративную иконку скрывайте через
aria-hidden="true". - Ссылка, которая открывает новую вкладку или скачивает файл, сообщает об этом в подписи или в тексте рядом.
- Ссылка срабатывает клавишей Enter; кольцо фокуса рисует компонент.
- Подчёркивание отличает ссылку от текста не только цветом; не убирайте его у ссылок внутри абзаца.
Классы
| Что | Классы |
|---|---|
| Блок | sf-link |
| Части | sf-link-content, sf-link-icon, sf-link__content, sf-link__icon |
Классы и переменные собраны из CSS выпуска и обновляются вместе с ним.
Переменные
Компонент читает свои переменные, а модификаторы задают им значения; таблица показывает, из чего складывается вид. Переменные компонента — его внутренняя проводка, а не поверхность настройки: их имена и устройство могут меняться. Вид проекта меняют общие токены, а глубокий вид Smart-компонента — его шаблон (см. Переменные компонента). Значение по умолчанию — из базового правила блока (.sf-link); переменную без него задают только модификаторы.
| Переменная | По умолчанию | Задаёт |
|---|---|---|
--sf-link--background-color |
var(--sf-transparent) |
background-color |
--sf-link--color |
var(--sf-link) |
color |
--sf-link--font-family |
var(--sf-text--family) |
font-family |
--sf-link--font-size |
var(--sf-text-size-1) |
font-size |
--sf-link--font-weight |
var(--sf-font-weight-regular) |
font-weight |
--sf-link--gap |
var(--sf-space-1/3) |
gap |
--sf-link--line-height |
var(--sf-text-height-1) |
line-height |
--sf-link--text-decoration |
underline |
text-decoration-line |
--sf-link-icon--size |
не задана; задают модификаторы, например .sf-link :where(.sf-link__icon, .sf-link-icon): var(--sf-text-height-1) |
height, block-size, width, inline-size |