Дополнительно
Как стилизовать выпадающий список <select> с помощью только CSS?
Существует ли способ стилизации выпадающего списка <select>
только с помощью CSS?
Мне нужно стилизовать форму <select>
настолько, насколько это возможно, без использования JavaScript. Какие свойства я могу использовать для этого в CSS?
Этот код должен быть совместим со всеми основными браузерами:
- Internet Explorer 6, 7 и 8
- Firefox
- Safari
Я знаю, что могу сделать это с помощью JavaScript: Пример.
И я'не говорю о простой стилизации. Я хочу знать, что лучшее мы можем сделать только с помощью CSS.
Я нашел похожие вопросы на Stack Overflow.
И этот на Doctype.com.
1247
20
Вот три решения:
Решение #1 - appearance: none - с Internet Explorer 10 - 11 workaround ([Demo][6])
--
Чтобы скрыть стрелку по умолчанию, установите
appearance: none
для элемента select, затем добавьте свою собственную стрелку сbackground-image
Поддержка браузеров:
appearance: none
имеет очень хорошую браузерную поддержку ([caniuse][7]) - за исключением Internet Explorer 11 (и более поздних версий) и Firefox 34 (и более поздних версий).Мы можем улучшить эту технику и добавить поддержку Internet Explorer 10 и Internet Explorer 11, добавив
Если речь идет об Internet Explorer 9, у нас нет возможности удалить стрелку по умолчанию (что означает, что у нас теперь будет две стрелки), но мы можем использовать забавный селектор Internet Explorer 9.
Чтобы, по крайней мере, отменить нашу пользовательскую стрелку, оставив нетронутой стрелку выбора по умолчанию.
Все вместе:
Это возможно, но, к сожалению, в основном в браузерах на базе WebKit в том объеме, который требуется нам, разработчикам. Вот пример CSS-стилей, собранных из панели опций Chrome через встроенный инспектор инструментов разработчика, улучшенных до соответствия поддерживаемым в настоящее время свойствам CSS в большинстве современных браузеров:
Когда вы запустите этот код на любой странице в браузере на базе WebKit, он должен изменить внешний вид поля выбора, убрать стандартную OS-стрелку и добавить PNG-стрелку, добавить интервал до и после метки, практически все, что вы захотите.
Наиболее важной частью является свойство
appearance
, которое изменяет поведение элемента.Оно отлично работает почти во всех браузерах на базе WebKit, включая мобильные, хотя Gecko, похоже, не поддерживает
appearance
так же хорошо, как WebKit.Элемент select и его выпадающий элемент *сложны для стилизации.
атрибуты стиля для элемента select Криса Хейлмана подтверждают слова Райана Доэри, сказанные в комментарии к первому ответу:
Наибольшее несоответствие я'вэ заметил, когда стиль выберите меню составляет сафари и Гугл Хром рендеринг (Firefox является полностью настраиваемый через CSS). После некоторых поисков через неясных глубинах Интернета я наткнулся на такую, которая почти полностью устраняет мои опасения с webkit:
Safari и Google Chrome не исправить:
Это, однако, снять стрелку. Вы можете добавить стрелку с помощью бизнес-див с фоном, отрицательная разница или абсолютно позиционированных на Выбрать выпадающее.
Подробная информация и другие переменные в CSS свойство: -в WebKit-внешний вид*.
Теги
<select>
можно стилизовать с помощью CSS, как и любой другой элемент HTML на HTML-странице, отображаемой в браузере. Ниже приведен пример (слишком простой), который размещает элемент select на странице и выделяет текст опций синим цветом.Пример HTML-файла (selectExample.html):
У меня был этот точный проблема, кроме того, что я не мог'т использовать изображения и не был ограничен в браузере поддержку. Это должно быть «вперед» и при удаче начать работать везде в конце концов.
Он использует многослойный повернут фоновых слоев для «вырезать» в стрелку, как псевдо-элементы не't работа для выберите элемент.
Редактировать: в этой обновленной версии я использую переменные CSS и крошечная система тематизации.
в
в :корень { --радиус: 2 пикселя; --baseFg: dimgray; --baseBg: белый; --accentFg: #006fc2; --accentBg: bae1ff#; }
Вот версия, которая работает во всех современных браузерах. Ключ находится через внешний вид:никто`, которая удаляет форматирование по умолчанию. Поскольку все форматирование пропало, вам нужно добавить обратно в стрелку, которая визуально отличает выберите из входного сигнала.
Рабочий пример: https://jsfiddle.net/gs2q1c7p/
в
Запись в блоге [как форма CSS выпадающего стиль нет JavaScript][1] работает для меня, но это не в [Опера][2] хотя:
в
У меня в вашем случае с помощью [загрузки][1]. Это самое простое решение, которое работает:
в
В современных браузерах это'ы относительно безболезненно стиль в
<выбрать>
в CSS. С внешний вид: нет Единственный нюанс состоит в замене стрелки (если что's то, что вы хотите). Здесь'ы решение, которое использует данные встроенного:
Ури с обычным текстом в SVG:в
Используйте свойство
Clip
, чтобы обрезать границы и Стрелка "выберите" элемент, а затем добавить свои собственные замены стилей в обертке:в
Редактировать этот элемент не рекомендуется, но если вы хотите попробовать это's, как любой другой HTML-элемент.
Редактировать пример:
Да. Вы можете стилизовать любой элемент HTML по имени его тега, например, так:
Конечно, вы также можете использовать CSS-класс, чтобы придать ему стиль, как и любому другому элементу:
Очень хороший пример, который использует
после
иперед
, Чтобы сделать трюк в стайлинга выбрать окна с помощью CSS3 | CSSDeckПри этом используется цвет фона для отдельных элементов и я убрала картинку..
Здесь'ы решение, основанное на моих любимых идей из этой дискуссии. Это позволяет в стиле &ЛТ;выберите> элемент напрямую, без дополнительной разметки.
Он работает интернет&ампер;усилитель; nbsp;Обозреватель&ампер;усилитель; nbsp;10 (и выше) с резервом для Internet&ампер;усилитель; nbsp;Обозреватель&ампер;усилитель; nbsp;8/9. Один нюанс для этих браузеров заключается в том, что фоновое изображение должно располагаться и быть достаточно мал, чтобы спрятаться за родной расширить контроль.
HTML-код
Как в Интернет Эксплорер 10, вы можете использовать клавишу
::-МС-расширить
псевдо селектор, элемент стиля, и скрывать, раскрывающийся элемент стрелки.Остальные стайлинг должен быть похож на другие браузеры.
[Здесь основной развилке Danield'с jsfiddle, что касается поддержки для IE10][2]
Там'ы простой способ.
Проверить эту скрипку, и да простят меня overstyling: https://jsfiddle.net/dkellner/7ac9us70/
Секрет: как только &ЛТ;выберите> тег получает свойство называется "размер", он будет вести себя как с фиксированной высотой списке, и, вдруг, по какой-то причине, позволяет стиль, черт побери. Сейчас, строго говоря, фиксированный список-это побочный эффект - но это только помогает нам больше, потому что мы используем его в "упал-вниз посмотри на".
Минимальный пример:<БР>
Выберите стили CSS
Испытана в интернет&ампер;усилитель; nbsp;проводник (10 и 11), край, Firefox и Chrome
в