Оформляем красиво тег SELECT при помощи CSS
Чтобы не создавать большую форму с выключателями или переключателями, иногда требуется создать выпадающее меню или прокручиваемый список. Для этих целей идеально подойдет тег <select>
и вложенные в него теги option (для определения каждого варианта в элементе формы <select>
). В этой статье описаны некоторые методы стилизации тега формы <select>
при помощи css, а также показано, как создать и оформить стрелку внутри тега <select>
.
Возможно, вам пригодится статья, где оформление тега select
происходит при помощи jQuery.
По умолчанию список выбора будет выглядеть следующим образом:
HTML-код вышеописанного списка выбора:
HTML
<select>
<option>Первый вариант</option>
<option>Второй вариант</option>
</select>
Есть некоторые свойства, которые мы можем назначить тегу <select>
, например: font
(шрифт), border
(граница), color
(цвет), padding
(отступ) и background-color
(цвет фона):
Однако, как вы можете заметить, стрелка остается на прежнем месте. Стилизовать стрелку вряд ли можно, однако решение есть – и оно довольно простое.
Для начала создайте блок div
и заключите в него наш список выбора (select
).
HTML
<div class="styled-select">
<select>
<option>Первый вариант</option>
<option>Второй вариант</option>
</select>
</div>
Далее нам нужно добавить немного CSS, чтобы зафиксировать нужное оформление списка выбора.
CSS
.styled-select select {
background: transparent;
width: 268px;
padding: 5px;
font-size: 16px;
border: 1px solid #ccc;
height: 34px;
}
Если вы установите ширину списка выбора (select
) больше ширины охватывающего блока (div
), стрелка исчезнет.
Затем найдите стрелку соответствующую вашему дизайну, например:
Затем охватывающему блоку назначьте стиль и в нем определите положение новой стрелки.
.styled-select {
width: 240px;
height: 34px;
overflow: hidden;
background: url(new_arrow.png) no-repeat right #ddd;
}
Наш список выбора будет выглядеть примерно (стили немного другие) так:
Зная данную методику, вы легко сделает красивый тег select, используя одно лишь CSS.
Комментарии к статье
Спасибо большое! Точно - все гениальное просто))) столько вариантов предлагают но в моем случае это не применишь))) ползет дизайн. Вы очень помоги.
Классный способ, но есть недостаток - в IE после закрытия списка он перекрывается серой полосой.
Есть еще косячок. При выпадении options-ы выглядят шире псведо-селекта. Тут стоило бы сделать два вложенных div - одним обрезать select а другой выдать по ширине select-a
Посмотрите свой пример в IE-7 :) Не работает ведь, потому что IE имеет не прозрачный фон а белый по умолчанию!!
кроссбраузерности 0 сам юзаю скрипт cuSel
Большое спасибо, очень полезная информация, спасибо!
Спасибо за совет!
Хром - казлит! стрелки в бекгарунте не видно из-за селекта, а в других браузерах вроде нормально
Максимум Армор!
very nice!!!
можно ли сделать чтоб выпадающий список открывался вверх??
Здравствуйте, подскажите пожалуйста, как это происходит, что хром не поддерживает прозрачность?, данную форму отчётливо вижу посредством хрома работоспособной здесь, но этот же код размещённый на странице моего сайта никак не отображает эту форму полноценно в этом же хроме, селектор перекрывает обёртку diva., хотя в лисе и IE отображается правильно, правда в IE форма не круглая, но зелёная и с кнопкой png, как и положено.., ничего не пойму(.
Так же не пойму почему здесь нормально, а на рабочем проекте хром не показывает прозрачность
Понятноrn-webkit-appearance: none;rnrnнадо такое сразу указывать
пожалуйста
Источник
Ага, -webkit-appearance: none; и прозрачность лучше через rgba, а то Опера ругается (по крайней мере, 12)
А option можно сделать покороче?
Ничего не работает... Пробовала добавлять другие свойства. Получается устранить все недостатки, и даже стрелка становится видна. Но вот фон ни как не получается сделать прозрачным.
Оксана, лучший вариант, для стилизации SELECT использовать jquery, например, есть отличный плагин styler
а как убрать родную стрелку?
никак, используйте jquery
Super!
Халтура, а не код, работает только в хроме!
убрать стрелку
select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
Спасибо! Очень помогло )