Я бы предложил свое решение, которое вы можете найти в этом репозитории GitHub .
Это работает также для IE8 и IE9 с настраиваемой стрелкой, которая идет от шрифта значка.
Примеры настраиваемого раскрывающегося списка кроссбраузерности в действии: проверьте их во всех своих браузерах, чтобы увидеть возможность кроссбраузерности.
В любом случае, давайте начнем с современных браузеров, а затем мы увидим решение для старых.
Выпадающая стрелка для Chrome, Firefox, Opera, Internet Explorer 10+
Для этих браузеров легко установить одно и то же фоновое изображение для раскрывающегося списка , чтобы у него была такая же стрелка.
Для этого вам необходимо сбросить стиль браузера по умолчанию для select
тега и установить новые фоновые правила (как предлагалось ранее).
select {
/* you should keep these firsts rules in place to maintain cross-browser behaviour */
-webkit-appearance: none;
-moz-appearance: none;
-o-appearance: none;
appearance: none;
background-image: url('<custom_arrow_image_url_here>');
background-position: 98% center;
background-repeat: no-repeat;
outline: none;
...
}
Для appearance
правил установлено значение «Нет», чтобы сбросить настройки браузеров по умолчанию, если вы хотите иметь одинаковый аспект для каждой стрелки, вы должны оставить их на месте.
В background
правилах в примерах устанавливаются с помощью встроенных изображений SVG , которые представляют различные стрелки. Они расположены на 98% слева, чтобы сохранить некоторый запас по правому краю (вы можете легко изменить положение по своему желанию).
Чтобы поддерживать правильное кроссбраузерное поведение, нужно оставить только одно правило - outline
. Это правило сбрасывает границу по умолчанию, которая появляется (в некоторых браузерах) при нажатии на элемент. Все остальные правила при необходимости можно легко изменить.
Стрелка раскрывающегося списка для Internet Explorer 8 (IE8) и Internet Explorer 9 (IE9) с использованием шрифта Icon
Это сложнее ... А может, и нет.
Не существует стандартного правила, чтобы скрыть стрелки по умолчанию для этих браузеров (например, select::-ms-expand
для IE10 +). Решение состоит в том, чтобы скрыть часть раскрывающегося списка , содержащую стрелку по умолчанию, и вставить шрифт значка стрелки (или SVG, если хотите), аналогичный SVG, который используется в других браузерах (подробнее см. select
Правило CSS. подробности об используемом встроенном SVG).
Самый первый шаг - установить класс, который может распознавать браузер: это причина, по которой я использовал условные IE IF в начале кода. Эти IF используются для присоединения определенных классов к html
тегу для распознавания старого браузера IE.
После этого каждый элемент select
HTML должен быть обернут div
(или любым другим тегом, который может обертывать элемент). В эту оболочку просто добавьте класс, содержащий шрифт значка.
<div class="selectTagWrapper prefix-icon-arrow-down-fill">
...
</div>
Проще говоря, эта оболочка используется для имитации select
тега.
Чтобы действовать как раскрывающийся список, оболочка должна иметь границу, потому что мы скрываем ту, которая идет от select
.
Обратите внимание, что мы не можем использовать select
границу, потому что мы должны скрыть стрелку по умолчанию, удлиняя ее на 25% больше, чем оболочку. Следовательно, его правая граница не должна быть видна, потому что мы скрываем эти 25% overflow: hidden
правилом, примененным к select
самому себе.
Пользовательский шрифт значка стрелки помещается в псевдокласс, :before
где правило content
содержит ссылку для стрелки (в данном случае это правая скобка).
Мы также помещаем эту стрелку в абсолютное положение, чтобы центрировать ее как можно больше (если вы используете разные шрифты значков, не забудьте настроить их соответствующим образом, изменив верхнее и левое значения и размер шрифта).
.ie8 .prefix-icon-arrow-down-fill:before,
.ie9 .prefix-icon-arrow-down-fill:before {
content: ")";
position: absolute;
top: 43%;
left: 93%;
font-size: 6px;
...
}
Вы можете легко создать и заменить фоновую стрелку или стрелку шрифта значка на каждую, которую вы хотите, просто изменив ее в background-image
правиле или создав новый файл шрифта значка самостоятельно.