Я хотел бы добавить стиль в поле выбора с псевдо: после (чтобы стилизовать поле выбора с двумя частями и без изображений). Вот HTML:
<select name="">
<option value="">Test</option>
</select>
И это не работает. Я не знаю почему, и я не нашел ответа в спецификациях W3C. Вот CSS:
select {
-webkit-appearance: none;
background: black;
border: none;
border-radius: 0;
color: white;
}
select:after {
content: " ";
display: inline-block;
width: 24px; height: 24px;
background: blue;
}
Так это нормально или есть прикол?
Ответы:
Я не проверял это тщательно, но у меня сложилось впечатление, что это невозможно (пока?) Из-за того, как
select
элементы генерируются ОС, в которой работает браузер, а не самим браузером.источник
Я искал то же самое, так как фон моего выбора такой же, как цвет стрелки. Как упоминалось ранее, пока невозможно добавить что-либо с помощью: before или: after для элемента select. Мое решение заключалось в создании элемента-оболочки, в который я добавил следующее: перед кодом.
И это мой выбор
Я использовал FontAwesome.io для своей новой стрелки, но вы можете использовать все, что захотите. Очевидно, это не идеальное решение, но в зависимости от ваших потребностей этого может быть достаточно.
источник
По моему опыту, это просто не сработает, если только вы не захотите обернуть себя
<select>
какой-нибудь оберткой. Но вместо этого вы можете использовать фоновое изображение SVG. НапримерПросто будьте осторожны с правильной кодировкой URL из-за IE. Вы должны использовать
charset=utf8
(не толькоutf8
), не использовать двойные кавычки (") для разделения значений атрибутов SVG, вместо этого используйте апострофы ('), чтобы упростить себе жизнь. URL-кодирование s (% 3E). Если вам нужно напечатать любые символы, отличные от ASCII, которые вы должны получить, чтобы получить их представление UTF-8 (например, BabelMap может помочь вам в этом), а затем предоставить это представление в виде URL-кодировки - например, для ▾ (U+25BE
ЧЕРНЫЙ ВНИЗ МАЛЕНЬКИЙ ТРЕУГОЛЬНИК) представление UTF-8\xE2\x96\xBE
который ,%E2%96%BE
когда URL - кодировке.источник
Этот пост может помочь http://bavotasan.com/2011/style-select-box-using-only-css/
Он использует внешний div с классом для решения этой проблемы.
источник
Столкнулся с такой же проблемой. Наверное, это могло быть решение:
источник
Это решение похоже на решение sroy, но с треугольником css вместо веб-шрифта:
источник
Что делать, если изменение разметки невозможно?
Вот решение, которое не требует обертки: оно использует SVG в фоновом изображении. Чтобы понять, как изменить цвет заливки, вам может потребоваться декодер HTML-объекта .
Щипал из CSS-уловок .
источник
Это современное решение, которое я придумал с помощью font-awesome . Для краткости расширения поставщиков опущены.
HTML
SCSS
Если ваш элемент выбора имеет определенный цвет фона, это не сработает, поскольку этот фрагмент по существу помещает значок шеврона за элементом выбора (чтобы можно было щелкнуть вверху значка, чтобы по-прежнему инициировать действие выбора).
Однако вы можете стилизовать оболочку select к тому же размеру, что и элемент select, и стилизовать его фон для достижения того же эффекта.
Проверьте мой CodePen чтобы рабочую демонстрацию, которая показывает этот кода как в темном, так и в светлом поле выбора с использованием обычной метки и метки-заполнителя, а также других очищенных стилей, таких как границы и ширина.
PS Это ответ, который я отправил на другой повторяющийся вопрос ранее в этом году.
источник
Insted из стиля выбора, почему бы вам не добавить div за пределами выбора.
и стиль затем в CSS
источник