Мне часто приходится использовать Select Box ( <select>) при создании формы с наличием выпадающего списка. Мне потребовалось время, чтобы выяснить, как легко и просто можно задать стиль Select Box-а с использованием лишь CSS, поскольку некоторые части зависят от браузера, например, выпадание вниз и не редактируются стандартным набором стилей.
Так выглядит Select Box по умолчанию:
А вот его HTML код:
1 2 3 4 |
<select> <option>Выбор из выпадающего списка</option> <option>Второй выбор из выпадающего списка</option> </select> |
В Select-Box-е есть определённые параметры, с помощью которых Вы можете сделать стилизацию select и которые можно настраивать, например, цвет шрифта, границы, цвет, отступы и фон:
Но раздражающая стрелка выпадающего списка всегда остаётся одной и той же. Не существует прямого способа изменить её стиль, но обходной путь довольно прост.
Сначала нам нужно окружить наш Select Box div-контейнером:
1 2 3 4 5 6 |
<div class="new-select-style-wpandyou"> <select> <option>Выбор из выпадающего списка</option> <option>Второй выбор из выпадающего списка</option> </select> </div> |
Далее нужно добавить немного CSS, чтобы убедиться, что элементы Select Box-а оформлены определённым образом:
1 2 3 4 5 6 7 8 9 10 11 |
.new-select-style-wpandyou select { border-radius: 0; background: transparent; height: 34px; padding: 5px; border: 0; font-size: 16px; line-height: 1; -webkit-appearance: none; width: 268px; } |
Необходимо убедиться, что Select Box занимает больше места, чем окружающий его div, так, что стрелка по умолчанию исчезает.
Вот новая стрелка, которую я хочу использовать:
Наш div-контейнер должен быть настроен таким образом, чтобы новая стрелка появлялась там, где мы хотим:
1 2 3 4 5 6 7 |
.new-select-style-wpandyou { border: 1px solid #CCC; overflow: hidden; height: 34px; background: url(http://wpandyou.ru/wp-content/uploads/2013/01/down_arrow_select.jpg) no-repeat right #DDD; width: 240px; } |
Теперь наш красивый Select Box выглядит так:
Дизайн стрелки можно скачать в интернете или сделать в фотошопе. Зная этот небольшой обходной путь, вы сможете намного легче задавать стиль Select Box-а в точности так, как вы хотите, чтобы он выглядел, с использованием одного лишь CSS.
Друзья смотрите другие полезные статьи CSS, HTML, jQuery:
- Эффект выцветания (fade) картинок, текста или меню с помощью CSS3
- Меню для мобильных сайтов. Обучение
Новые материалы для пользователей WordPress:
Удачи и хороших зароботков Друзья!
Вот это прикольно!!! Уже поставил на сайте. Спасибо!
Cool
Ой, молодца!!!!! Получилось все так, как и хотелось!
Bad! Текст налазит на стрелку, а ето очень плохо.
Максим, увеличьте ширину из примера width: 268px; на нужную вам
Все хорошо, только в Opere не работает 🙁
Да, в Опере нужно добиться хотя бы стандартного отображения стрелки, а так там совсем беда. Нужно именно хитрое решение какое-то.
А как сделать чтобы блок выравнивался по центру, просто у меня везде прописано выравнивание по центру, обычный селект выравнивается, а этот упорно липнет к левому краю.
попробуйте добавить css свойство
— центрует элемент у которого задана ширина
круто это конечно да …!!!
но вот как сделать также или примерно также что бы не только в хроме и сафари поддерживалось… ????
использовать javascript и замену элемента формы select другими html элементами (по нужному событию — значения подставляется в скрытый select или input type=hidden элемент)
кучу решений, вот пару вариантовhttp://getbootstrap.com/2.3.2/components.html#buttonDropdowns (пример из документации по bootstrap)
jqtransform: пример тут http://www.euro-l.ru/calc/ (в форме расчета стоимости натяжного потолка)
bootstrap:
вольный перевод этой статьиhttp://bavotasan.com/2011/style-select-box-using-only-css/ но вот автор не указан…ай-яй
Да Вы масштаб браузера подвигайте, и спрятанная стрелка select опять появиться, и сам список в ширину становиться больше!!!
Кто нибудь нашел решение для Opera без JS?
Сразу видно писали под Хром, -webkit-appearance: none; только в нём и работает … Так себе решение
Подскажите а как сделать расстояние больше между строчками выпадающего списка?
Вот вставляю такой код
option {
background: orange;
padding: 10px 0 !important;
}
Цвет списка меняется, а расстояние нет.
попробуйте line-height, height
Чего оно такое корявое у тебя получилось?!
Решение бесподобное по своей простоте!!! Спасибо!
Единственный минус — если текст в option длиннее чем блок — текст налазит на стрелку
select {
background: transparent;
outline : none;
overflow : hidden;
text-indent : 0.01px;
text-overflow : »;
-webkit-appearance: none;
-moz-appearance: none;
}
select::-ms-expand {
display: none;
}
И ширину селекта можно оставить в 100% от родителя. (чтобы option не распирало)
Стилизация селекта тут
http://phpjs.ru/2017/02/28/customize-select/