Стилизация элементов формы¶
Узнайте, как реализовать элементы управления формами с помощью CSS.
В этом модуле вы узнаете, как придать стиль элементам управления формы и как совместить их со стилями других сайтов.
Стилизация HTML элементов управления формами может быть непростой задачей, но все же по возможности следует использовать встроенные элементы. Такие элементы, как <input>
и <button>
, широко поддерживаются всеми браузерами и платформами и имеют встроенные функции, повышающие удобство использования и доступность, которые не нужно реализовывать самостоятельно. Использование вместо них <div>
не дает таких преимуществ.
Помогите пользователям выбрать вариант¶
Элемент <select>
¶
Стили элемента <select>
, используемые по умолчанию, выглядят не лучшим образом, и в разных браузерах они несовместимы.
Можно также использовать <input>
в сочетании с элементом <datalist>
. Это позволяет получить комбинацию текстового поля и списка элементов <option>
. Примеры использования элемента <datalist>
можно посмотреть здесь.
Для начала изменим стрелки.
1 2 3 4 5 6 7 8 9 10 |
|
Чтобы убрать стрелки, установленные по умолчанию в элементе <select>
, используйте свойство CSS appearance
. Чтобы показать стрелку по своему выбору, определите ее как background
.
Для обеспечения наилучшей кроссбраузерной совместимости необходимо также включить версии appearance
с префиксами: -moz-appearance
и -webkit-appearance
.
Для элемента <select>
также следует изменить font-size
на значение не менее 1rem
(которое для большинства браузеров по умолчанию равно 16px
). Это позволит предотвратить масштабирование страницы в iOS Safari при фокусировке элемента управления формой.
Разумеется, можно также изменить цвета элементов в соответствии с фирменными цветами. После добавления еще нескольких стилей для интервалов, :hover
и :focus
внешний вид элемента <select>
стал единообразным в разных браузерах.
В этом можно убедиться на примере следующей демонстрации из Styling a Select Like It's 2019
Что касается элемента <option>
? Элемент <option>
- это так называемый замененный элемент, представление которого находится за пределами CSS. На данный момент стилизация элемента <option>
невозможна.
В настоящее время существует предложение разрешить веб-разработчикам стилизовать и расширять встроенные элементы управления веб-интерфейсом, включая элементы <select>
и <option>
. Это позволит в будущем упростить стилизацию элементов управления формами.
Подробнее о Open UI.
Чекбоксы и радиокнопки¶
Внешний вид кнопок <input type="checkbox">
и <input type="radio">
различается в разных браузерах.
Откройте demo в разных браузерах, чтобы увидеть разницу. Давайте посмотрим, как сделать так, чтобы флажки и радиокнопки соответствовали вашему бренду и выглядели одинаково в разных браузерах.
Раньше разработчики не могли напрямую стилизовать элементы управления <input type="checkbox">
и <input type="radio">
. Теперь же Checkbox'ы и радиокнопки можно стилизовать через их псевдоэлементы. Или же для создания пользовательских стилей для этих элементов можно использовать следующую технику замены.
Сначала визуально скройте стандартные флажок и радиокнопку.
1 2 3 4 5 |
|
Важно использовать position: absolute
в сочетании с opacity: 0
вместо display: none
или visibility: hidden
, чтобы элементы управления были скрыты только визуально. Это обеспечит их отображение в дереве доступности браузера. Обратите внимание, что может потребоваться дополнительная стилизация для того, чтобы визуально скрытые элементы управления формой оставались расположенными "поверх" элементов-заменителей. Это поможет обеспечить наведение курсора на один из этих элементов при включенном устройстве чтения с экрана или при использовании сенсорных устройств с включенными устройствами чтения с экрана, при этом визуально скрытые элементы управления можно будет обнаружить при исследовании с помощью прикосновения, а видимый индикатор фокуса устройства чтения с экрана, как правило, будет отображаться в том месте, где элементы управления отображаются на экране.
Для отображения пользовательских флажков и радиокнопок существуют различные варианты. Можно использовать псевдоэлемент CSS ::before
и свойство CSS background
, а также использовать встроенные SVG-изображения.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Стилизованные элементы управления формой должны быть просты для понимания и использования. Люди привыкли к флажку, который выглядит как флажок, поэтому при стилизации элемента управления формы убедитесь, что пользователи все равно понимают, как им пользоваться.
С помощью CSS существует множество возможностей для обеспечения соответствия флажков и радиокнопок фирменному стилю.
Подробнее о стилях <input type="checkbox">
и <input type="radio">
и пользовательских стилях чекбоксов.
Как использовать цвета сайта для элементов управления формы¶
Хотите привнести стили сайта в элементы управления формы с помощью одной строки кода? Для этого можно использовать CSS-свойство accent-color
.
1 2 3 |
|
На данный момент только Chrome, Firefox и Edge поддерживают accent-color
. Чтобы обеспечить кроссбраузерную совместимость, до тех пор, пока accent-color
не будет поддерживаться на всех платформах, лучше использовать обходные пути.
Ресурсы¶
- Accent color
- Стилизация элемента
<select>
- Доступность элементов управления стилизованных форм
- Open UI
Источник — Styling form controls