Kbd
Kbd показывает сочетание клавиш рядом клавиш. Он называет клавиши-символы для скринридеров и показывает ⌘ на Mac и Ctrl на других системах.
<tk-kbd keys="Mod+K"></tk-kbd> <tk-kbd keys="Mod+Shift+P"></tk-kbd> <tk-kbd keys="Esc"></tk-kbd>
Анатомия
| Часть | Что это |
|---|---|
tk-kbd |
сам элемент; строчный, без фокуса и без роли |
part key |
каждая клавиша, нативный <kbd> |
part separator |
+ между клавишами, только в bare |
Клавиша-символ, например ⌘ или ↑, показывает символ, а скринридеру отдаёт слово, например
«Command» или «Up arrow». Буква или слово, например K или F5, — обычный текст.
Варианты
<tk-kbd keys="Mod+K"></tk-kbd> <tk-kbd keys="Mod+K" treatment="bare"></tk-kbd>
chip(по умолчанию): каждая клавиша на мягкой плашке. Там, где сочетание главное: подвалы палитр, подсказки, шпаргалки.bare: тихий вспомогательный текст с+между клавишами. Там, где сочетание стоит после подписи, например в слотеtrailingпунктаMenu .
Клавиши
Перечислите клавиши в атрибуте keys через +. Регистр у именованных клавиш не важен.
| Пишете | На Mac | На других системах |
|---|---|---|
Mod |
⌘ | Ctrl |
Ctrl, Control |
⌃ | Ctrl |
Alt, Option, Opt |
⌥ | Alt |
Shift |
⇧ | Shift |
Cmd, Command |
⌘ | ⌘ |
Enter, Return |
⏎ | ⏎ |
Backspace / Delete, Del |
⌫ / ⌦ | ⌫ / ⌦ |
Up, Down, Left, Right |
↑ ↓ ← → | ↑ ↓ ← → |
Esc, Tab, Space |
слово | слово |
Всё остальное, например K, 5 или F5, показывается как написано. Символы, введённые
напрямую, например ⌘ или ↵, тоже называются для скринридеров.
Клавишу +, , или пробел в атрибут не записать. Задайте свойство keys массивом
или напишите Space:
document.querySelector('tk-kbd').keys = ['Ctrl', '+'];Платформа
<tk-kbd keys="Mod+S" platform="mac"></tk-kbd> <tk-kbd keys="Mod+S" platform="windows"></tk-kbd>
platform по умолчанию auto: Kbd смотрит на операционную систему читателя. Значения
mac, windows или linux задают её явно. windows и linux выглядят одинаково.
- Для основного модификатора пишите
Mod: на Mac это ⌘, на других системах Ctrl.Ctrlвсегда означает клавишу Control, поэтому на Mac покажется ⌃, а не ⌘. autoвидит систему, а не клавиатуру. PC-клавиатура на Mac, переназначенные клавиши или удалённый рабочий стол могут его обмануть. Если ваш код выбирает модификатор по-другому, задайтеplatformтак же.
Когда использовать
- Kbd — чтобы показать сочетание клавиш: в подвале командной палитры, подсказке, рядом с кнопкой или в пункте меню.
- Он только показывает сочетание. Клавиши он не слушает; сочетание обрабатывает ваш код. Следите, чтобы они совпадали.
- Для одной клавиши в тексте хватит
<kbd class="tk-kbd">: см.Prose . Выглядит так же.tk-kbdнужен для нескольких клавиш, названий символов или подмены под платформу.
Текст
- Показывайте сочетание, которое ваш код действительно обрабатывает, на той платформе, где обрабатывает.
- Пишите клавиши в порядке нажатия: сначала модификаторы, потом клавиша.
- Называйте клавишу её собственным именем:
Esc,Enter,F5. Не придумывайте подписи.
Можно / нельзя
| ✅ Можно | ❌ Нельзя |
|---|---|
Mod+K для основного модификатора |
Ctrl+K: на Mac будет ⌃K |
platform, если код сам выбирает модификатор |
Надеяться, что auto знает клавиатуру |
bare в пункте меню |
Яркая плашка рядом с подписью пункта меню |
| Сочетание, которое обрабатывает ваш код | Считать Kbd самим сочетанием |
Клавишу + через свойство keys |
Клавишу + в атрибуте |
Связанные
Prose : класс.tk-kbdдля одной клавиши.Menu : слотtrailingдля подсказки с сочетанием.Code block : код, а не клавиши.
API
Атрибуты
| Атрибут | Тип | По умолчанию | Что делает |
|---|---|---|---|
keys |
строка через +; или массив в свойстве |
нет | клавиши сочетания |
platform |
auto | mac | windows | linux |
auto |
под какую платформу показывать модификаторы |
treatment |
chip | bare |
chip |
плашки или тихий текст |
Слоты
Нет. Клавиши задаются в keys.
События
Нет. Kbd не интерактивен.
CSS
::part(key): каждый<kbd>.::part(separator):+вbare.
Токены
| Вид | Токены |
|---|---|
chip |
плашка surface/subtle, угол radius-4, отступы по бокам space-6, без рамки; между клавишами space-4; текст цвета окружения, моноширинный, 0.875em |
bare |
text/secondary, шрифт окружения; space-4 вокруг каждого + |
Плашка такая же, как у класса .tk-kbd. Значения по темам:
Доступность
Встроено:
- Каждая клавиша — настоящий
<kbd>. - Клавиши-символы названы для скринридеров: ⌘ читается как «Command», а не как имя символа в Unicode.
- Разделитель
+скрыт; скринридер слышит «Command K». - Kbd не берёт фокус и не имеет роли, поэтому никогда его не перехватывает.
На вашей стороне:
- Для основного модификатора
Mod, а неCtrl. - Задайте
platform, если ваш код может не совпасть с определённой системой. - Сделайте доступным само сочетание. Сочетание из одного символа должно отключаться, переназначаться или работать только при фокусе на своём элементе (WCAG 2.1.4). Это задача вашего кода, а не Kbd.
Пределы контраста
- Текст клавиши не ниже 15:1 на плашке в светлой и контрастной теме и 8.78:1 в тёмной.
Текст
bare—text/secondary, не ниже 4.5:1. - Форма плашки едва видна: 1.09:1 к странице в светлой теме и 1.22:1 в контрастной. Текст клавиши всё равно читается; если форма клавиши должна выделяться, ставьте плашку на обычный фон страницы или карточки.
- Рядом со строчным
codeплашка клавиши мягче: уcodeесть тонкая рамка, у плашки нет.