Ссылки
Ядро красит ссылки в тексте ролью ссылки и меняет цвет при наведении, нажатии
и после посещения. Классы link-* берут цвет окружающего текста и задают
стиль подчёркивания.
Пример
Цвет по умолчанию
Ссылка без класса и ссылка с классом link-… красятся ролью ссылки.
Наведите указатель и нажмите, чтобы увидеть состояния.
Цвет окружающего текста
Под каждым образцом — класс. Наведите указатель: link-inherit берёт цвет
текста только в покое, link-inherit-link — и при наведении.
Стиль подчёркивания
Подчёркивание включает класс underline или hover:underline, вид линии —
link-dotted и link-dashed.
Классы
| Класс | CSS | Значения |
|---|---|---|
link-inherit |
color: var(--sf-current); text-decoration-color: currentColor |
— |
link-inherit-link |
то же в покое и при наведении | — |
link-dotted |
text-decoration-style: dotted |
— |
link-dashed |
text-decoration-style: dashed |
— |
link-underline-none |
text-decoration-line: none в покое и при наведении |
— |
Каждый класс действует на саму ссылку и на ссылки внутри элемента, на котором он стоит.
Условия (что это): ширина экрана — нет; состояния — нет.
Применение
Цвет по умолчанию
Ядро красит ролью ссылки три вида ссылок:
- ссылку без атрибута
class; - ссылку, у которой есть класс с
link-в имени, напримерlink-dotted; - ссылку, перед которой на том же уровне стоит элемент с таким классом.
| Состояние | Цвет текста и подчёркивания |
|---|---|
| в покое | --sf-link |
| наведение | --sf-link-hover |
| нажатие | --sf-link-active |
| посещённая | --sf-link-visited |
Значения ролей в светлой и тёмной теме — на странице
«Link». Подчёркивание у таких
ссылок отстоит от текста на --sf-a3.
Цвета наведения, нажатия и посещения ядро ставит любой ссылке, кроме кнопки
sf-button. Цвет в покое ссылка с другими классами получает от своего
компонента; ядро его не задаёт.
Утилита цвета на самой ссылке (color-on-surface и другие color-*)
перекрывает и эти состояния: слой утилит идёт после базового слоя ядра
(см. Каскадные слои). Такая ссылка не
меняет цвет при наведении, поэтому дайте ей другой признак наведения,
например подчёркивание.
Третье правило держит в одном цвете ссылки, которые стоят подряд: в строке
<a class="link-dotted" href="/a">Первая</a> · <a class="font-bold" href="/b">Вторая</a>
вторая ссылка получает цвет ссылки, хотя её класс сам цвета не даёт, —
потому что перед ней стоит ссылка с классом link-.
Ссылка внутри элемента с классом disabled берёт цвет окружающего текста и
обычный курсор.
Цвет окружающего текста
Ссылка в цветном блоке — в алерте, в подписи на цветной подложке — должна быть того же цвета, что текст вокруг.
link-inheritберёт цвет текста в покое. При наведении и нажатии ссылка окрашивается ролями--sf-link-hoverи--sf-link-active, и это показывает, что она интерактивна.link-inherit-linkберёт цвет текста и в покое, и при наведении, и при нажатии. Оставьте ссылке другой признак — подчёркивание.
<p class="color-error">Не удалось сохранить. <a href="/help" class="link-inherit">Подробнее</a></p>
<div class="color-on-surface-variant link-inherit-link">
<a href="/terms" class="underline link-dotted">Условия</a>
</div>
Подчёркивание
Ссылка по умолчанию не подчёркнута. Подчёркивание включают классы
оформления текста:
underline — всегда, hover:underline — при наведении. Линия берёт цвет
ссылки и меняет его вместе с состоянием.
link-dotted и link-dashed меняют только вид линии, поэтому без
underline или hover:underline их не видно.
<a href="/docs" class="underline link-dotted">Документация</a>
<a href="/faq" class="hover:underline link-dashed">Вопросы</a>
link-underline-none убирает подчёркивание у ссылки и у ссылок внутри
блока — в покое и при наведении.
Ограничения
- Классы
underlineиhover:underlineделают ссылку классовой. Цвет ссылки она сохраняет, только если рядом есть классlink-…, напримерlink-dotted. Сплошного подчёркивания среди классовlink-*нет: чтобы подчеркнуть сплошной линией ссылки в тексте статьи, задайте это в CSS проекта для ссылок без классов. - Посещённая ссылка с
link-inheritилиlink-inherit-linkв покое окрашивается--sf-link-visited, а не цветом текста. - Классы
link-*лежат в базовом слое ядра. Подчёркивание, заданное утилитой, компонентом или CSS проекта, они не перебивают:link-underline-noneне сниметunderlineна той же ссылке. - Префиксов ширины экрана и состояния у классов нет.
- Подчёркивание — привычный признак ссылки в тексте. Если его нет, ссылка должна отличаться от текста цветом.