Компонент Label является базовым элементом управления пользовательским интерфейсом, используемым для привязки текстовых описаний к интерактивным элементам, таким как input, select, textarea и другие элементы формы. Основная цель Label — обеспечить семантическую связь между элементом формы и его текстовым описанием, что важно для доступности (accessibility) и улучшения пользовательского опыта.
for Атрибут for связывает Label с
конкретным элементом формы по его id. Это обеспечивает
фокусировку на элементе при клике на текст метки.
<Label for="username">Имя пользователя</Label>
<input id="username" type="text" />required Атрибут required добавляет
визуальное обозначение, что поле обязательно для заполнения. В SvelteKit
UI libs это обычно реализуется через добавление красочной звездочки или
другой индикации:
<Label for="email" required>Email</Label>
<input id="email" type="email" required />disabled Если элемент формы отключен, Label автоматически применяет соответствующий стиль для визуальной согласованности:
<Label for="age" disabled>Возраст</Label>
<input id="age" type="number" disabled />Label поддерживает гибкие подходы к стилям через классы и CSS-переменные:
Цвет текста:
<Label for="name" class="text-primary">Имя</Label>
Здесь text-primary может быть классом из Tailwind CSS
или из собственной темы SvelteKit UI.
Размер текста и шрифт:
<Label for="password" class="text-sm font-medium">Пароль</Label>Отступы и позиционирование: Отдельные библиотеки
UI позволяют управлять margin, padding и
выравниванием, чтобы Label корректно располагался рядом с полем
ввода.
В SvelteKit UI libs Label может выступать не только текстовой меткой, но и контейнером для вложенных элементов, что упрощает создание кастомных форм:
<Label class="flex flex-col">
Имя пользователя
<input type="text" class="mt-1 border rounded" />
</Label>
Такой подход улучшает читаемость кода и позволяет стилизовать Label вместе с элементом формы единообразно.
ARIA attributes: Если стандартного
for недостаточно (например, при сложной кастомизации),
Label поддерживает добавление ARIA-атрибутов:
<Label aria-label="Имя пользователя">Имя</Label>Фокусировка: При клике на Label фокус автоматически перемещается на связанный элемент формы, что критично для навигации с клавиатуры.
Label часто используется совместно с компонентами Input, Checkbox, RadioButton, Select. Пример комплексного использования:
<div class="form-group">
<Label for="newsletter">Подписка на новости</Label>
<Checkbox id="newsletter" />
</div>
<div class="form-group">
<Label for="gender">Пол</Label>
<RadioButton id="male" name="gender" value="male">Мужской</RadioButton>
<RadioButton id="female" name="gender" value="female">Женский</RadioButton>
</div>
Такое использование обеспечивает единство визуального стиля и правильную семантику формы.
Label в SvelteKit UI libs можно обновлять динамически, используя реактивность Svelte:
<script>
let username = '';
</script>
<Label for="username">
{username ? `Имя пользователя: ${username}` : 'Введите имя'}
</Label>
<input id="username" bind:value={username} type="text" />
Это позволяет создавать формы с мгновенной обратной связью для пользователя без необходимости вручную управлять текстом меток.
for для простых
форм — это улучшает доступность.Использование Label в SvelteKit UI libs позволяет создавать чистые, семантически правильные формы с гибкой кастомизацией, высокой доступностью и удобством для пользователей.