Опубликовано: 24 марта 2025 г.
Начиная с Chrome 135, веб-разработчики и дизайнеры наконец-то могут объединиться для создания доступного, стандартизированного и стилизованного CSS-элемента <select>
в Интернете. На разработку ушло много лет, многие часы проектирования и совместной работы над спецификациями, и в результате получился невероятно богатый и мощный компонент, который не сломается в старых браузерах.
Вот видео индивидуального выбора с использованием этих новых функций:
Если вы внимательно следили за этим, вы заметили, что некоторые названия спецификаций и функций изменились после запроса Una на обратную связь от сообщества . К счастью, если вы работали с этого поста и вас интересует , что изменилось, Уна также поможет вам .
Также есть новая блестящая документация по MDN для настраиваемого select , полная подробностей.
Встречайте appearance: base-select
Новый appearance: base-select
, который переводит элемент <select>
в новое, настраиваемое и стилизованное состояние, которое обычно называют «базовыми» стилями:
.custom-select {
&, &::picker(select) {
appearance: base-select;
}
}
Использование base-select
открывает ряд новых функций и вариантов поведения:
- Изменяет парсер HTML браузера для содержимого внутри
<select>
. - Изменяет отображаемые внутренние элементы
<select>
. - Предоставляет новые внутренние части и состояния для
<select>
. - Новый минималистичный внешний вид, оптимизированный для индивидуальной настройки.
- Показанные параметры находятся на верхнем уровне, как всплывающее окно.
- Показанные параметры расположены с помощью
anchor()
.
Использование base-select
теряет ряд функций и вариантов поведения:
-
<select>
не отображается за пределами панели браузера. - Он не запускает встроенные компоненты мобильной операционной системы.
-
<select>
перестает принимать ширину самого длинного<option>
.
<select>
теперь может включать в себя богатый HTML-контент.
Прежде чем вы могли настроить <select>
, если вы помещали в элемент <option>
такие вещи, как изображение или SVG, браузер игнорировал их.
Рассмотрим следующий HTML-код: браузер будет читать его так, как вы его написали:
<select class="custom-select">
<option>
<svg aria-hidden>…</svg>
<span>HTML</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>CSS</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>JavaScript</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>WASM</span>
</option>
</select>
Однако используемый DOM не будет включать <svg>
:
<select class="custom-select">
<option>
<span>HTML</span>
</option>
<option>
<span>CSS</span>
</option>
<option>
<span>JavaScript</span>
</option>
<option>
<span>WASM</span>
</option>
</select>
Вот (слева направо) Chrome, Safari и Firefox, отображающие предыдущий HTML. Если браузер поддерживает appearance: base-select
, тогда SVG появится в этом параметре, в противном случае — нет.

Существует риск поломки существующих веб-сайтов с настраиваемым выбором из-за изменений в парсере. В Chrome есть функции, лежащие в основе эксперимента Finch, на случай, если возникнет необходимость его отключить. Если дела пойдут хорошо, эксперимент завершится, и код будет навсегда отправлен в исходный код.
Полностью настраиваемый
Каждую часть base-select
можно заменить, настроить и анимировать. Вот демо-версия, в которой используются все новые функции для создания узнаваемых и содержательных избранных возможностей.

Еще больше примеров вы найдете в разделе ресурсов в конце этого поста.
Неизмененные интерфейсы JavaScript
Нет никаких рисков для существующих взаимодействий JavaScript с элементом <select>
.
Однако если вы начнете добавлять расширенный HTML-код в элементы <option>
, вам следует протестировать выбранные значения, поскольку браузер по-прежнему анализирует и игнорирует изображения и SVG. Однако изменилась логика определения выбранной строки контента, и в зависимости от того, какие у вас есть параметры, вам может потребоваться внести изменения.
Если вы используете атрибут value
в <option>
, вам не о чем беспокоиться.
Ресурсы
Chrome первым реализовал base-select
, но в спецификациях участвовали все браузеры, и еще предстоит доработать еще несколько «базовых» элементов. Это только начало.
Оставайтесь с нами, мы продолжим добавлять рекомендации, примеры и ресурсы по настройке выбранных элементов. А пока просмотрите следующие ссылки для получения дополнительной информации.
- Веб-стандарты
- Хром
- Сообщество
Особая благодарность всем, кто причастен к этому!