Стилизация select - возможности и тонкости оформления элементов выбора средствами CSS

Select - один из самых сложных для стилизации элементов формы. Но с помощью CSS можно сделать его привлекательным и функциональным. В этой статье рассмотрим основные приемы оформления выпадающих списков и полей выбора.

Базовая стилизация select

Для начала давайте вспомним, как выглядит стандартный select без стилей. В разных браузерах его внешний вид может немного отличаться, но общая концепция одинакова - прямоугольное поле с текстом и стрелкой, которая разворачивает выпадающий список опций.

Чтобы придать такому select индивидуальный вид, не нужны никакие дополнительные обертки или псевдоэлементы. Достаточно применить прямо к нему несколько базовых CSS-правил.

Свойство appearance для скрытия стандартного select

В CSS есть удобное свойство appearance, которое позволяет полностью скрыть стандартное отображение элемента. Для select достаточно прописать:

select { -webkit-appearance: none; -moz-appearance: none; appearance: none; }

Теперь стандартная стрелка исчезнет, и мы сможем добавить на ее место любую кастомную картинку или фон.

Изменение paddings и margins

Большинство браузеров позволяют без проблем изменять внутренние и внешние отступы select. Например, чтобы сделать поле пошире, можно применить:

select { padding: .5em .8em; margin: 1em; }

Это сразу сделает элемент выбора более вместительным и заметным на форме.

Добавление рамок и фона

Также поддерживаются стандартные правила оформления вроде границ, теней и заполнений:

select { border: 1px solid #ccc; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background: #fff url(arrow.png) no-repeat 90% 50%; }

Это позволяет сделать select максимально похожим на обычное текстовое поле и согласовать его со стилем всей формы.

Замена стрелки выбора на кастомную

Как мы видели выше, стандартную стрелку можно легко скрыть свойством appearance. А на ее место вставить любое изображение, задав его фоном:

select { background: #fff url(arrow.png) no-repeat 90% 50%; background-size: 15px; }

Главное - подобрать подходящий размер и позицию, чтобы стрелка смотрелась органично.

Кроссбраузерная поддержка стилей

Чтобы избежать проблем с отображением в разных браузерах, нужно не забывать про вендорные префиксы для свойств вроде appearance. Также отдельно стоит тестировать стили в старых версиях IE, которые зачастую ведут себя непредсказуемо.

Стилизация select

В целом же базовая стилизация select на чистом CSS оказывается проще, чем может показаться на первый взгляд. Несколько строк кода - и элемент выбора преображается, становясь ярким акцентом формы.

Дальше мы рассмотрим более сложные приемы визуального оформления, которые помогут сделать select максимально функциональным и привлекательным.

Расширенные приемы стилизации

Базовых стилей бывает недостаточно, чтобы реализовать по-настоящему креативный дизайн select. Давайте рассмотрим несколько более продвинутых приемов оформления.

Градиенты, тени и другие эффекты

Современные браузеры позволяют использовать для стилизации select практически любые эффекты: градиенты, несколько теней, закругленные углы, анимации и другое:

select { background: linear-gradient(to bottom, #eee, #fff); border-radius: .25em; box-shadow: 0 1px 3px rgba(0,0,0,.3), 0 10px 15px rgba(0,0,0,.15) inset; transition: all .3s ease; }

Главное следить за поддержкой в разных браузерах и не перебарщивать с эффектами, чтобы не испортить юзабилити.

Стилизация option средствами CSS и JavaScript

Пункты выпадающего списка option тоже можно оформлять при помощи CSS, но из-за особенностей отображения этот прием работает не везде одинаково:

select option { padding: .25em .5em; background: #f6f6f6; color: #454545; }

Поэтому часто используют JavaScript, который гарантированно применит нужные стили к option в любом браузере.

Выравнивание и адаптивность select

Элементы выбора также можно гибко позиционировать с помощью свойств вроде float, position и media-запросов. Это позволяет отображать их оптимальным образом на разных устройствах:

@media (max-width: 600px) { select { width: 100%; float: none; } }

Отображение разных состояний: фокус, ошибка, отключение

Помимо стандартного стиля нужно не забывать об оформлении таких состояний select, как фокус, ошибка валидации и отключение:

select:focus { border-color: #3385ff; } select:disabled { opacity: .5; pointer-events: none; }

Это сделает форму более информативной и понятной для пользователя.

Стилизация: стрелки

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

Комментарии