Sugerowałbym moje rozwiązanie, które można znaleźć w tym repozytorium GitHub .
Działa to również dla IE8 i IE9 z niestandardową strzałką pochodzącą z czcionki ikony.
Przykłady niestandardowych menu rozwijanych między przeglądarkami w akcji: sprawdź je we wszystkich przeglądarkach, aby zobaczyć funkcję różnych przeglądarek.
W każdym razie zacznijmy od nowoczesnych przeglądarek, a potem zobaczymy rozwiązanie dla starszych.
Rozwijana strzałka dla Chrome, Firefox, Opera, Internet Explorer 10+
W tych przeglądarkach łatwo jest ustawić ten sam obraz tła dla listy rozwijanej , aby mieć tę samą strzałkę.
Aby to zrobić, musisz zresetować domyślny styl przeglądarki dla select
tagu i ustawić nowe reguły tła (jak sugerowano wcześniej).
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;
...
}
Te appearance
zasady są ustawione na none zresetować przeglądarek domyślnych, jeśli chcesz mieć taki sam wygląd dla każdej strzałki, należy przechowywać je w miejscu.
Te background
zasady w przykładach są ustawione z SVG inline obrazów, które reprezentują różne strzały. Są ustawione w 98% od lewej, aby zachować pewien margines do prawej krawędzi (możesz łatwo zmodyfikować pozycję, jak chcesz).
Aby zachować prawidłowe działanie różnych przeglądarek, jedyną inną regułą, którą należy pozostawić, jest outline
. Ta reguła resetuje domyślne obramowanie, które pojawia się (w niektórych przeglądarkach) po kliknięciu elementu. W razie potrzeby wszystkie pozostałe reguły można łatwo zmodyfikować.
Rozwijana strzałka dla Internet Explorer 8 (IE8) i Internet Explorer 9 (IE9) przy użyciu Icon Font
To jest trudniejsza część ... A może nie.
Nie ma standardowej reguły ukrywania domyślnych strzałek w tych przeglądarkach (np. W select::-ms-expand
IE10 +). Rozwiązaniem jest ukrycie części listy rozwijanej zawierającej domyślną strzałkę i wstawienie czcionki ikony strzałki (lub SVG, jeśli wolisz) podobnej do SVG używanej w innych przeglądarkach (więcej informacji znajdziesz w select
regule CSS szczegółowe informacje na temat zastosowanego wbudowanego pliku SVG).
Pierwszym krokiem jest ustawienie klasy, która rozpoznaje przeglądarkę: to jest powód, dla którego użyłem warunkowych IF IE na początku kodu. Te IF służą do dołączania określonych klas do html
tagu, aby rozpoznać starszą przeglądarkę IE.
Następnie każdy select
element HTML musi być opakowany div
(lub jakimkolwiek znacznikiem, który może otoczyć element). W tym opakowaniu wystarczy dodać klasę zawierającą czcionkę ikony.
<div class="selectTagWrapper prefix-icon-arrow-down-fill">
...
</div>
Mówiąc prosto, to opakowanie służy do symulacji select
tagu.
Aby zachowywać się jak lista rozwijana, opakowanie musi mieć obramowanie, ponieważ ukrywamy ten, który pochodzi z select
.
Zauważ, że nie możemy użyć select
obramowania, ponieważ musimy ukryć domyślną strzałkę wydłużając ją o 25% bardziej niż opakowanie. W konsekwencji jego prawa krawędź nie powinna być widoczna, ponieważ ukrywamy to 25% więcej przez overflow: hidden
regułę zastosowaną do select
samej siebie.
Niestandardowa ikona-font strzałki jest umieszczana w pseudoklasie, w :before
której reguła content
zawiera odniesienie do strzałki (w tym przypadku jest to prawy nawias).
Umieszczamy również tę strzałkę w absolutnej pozycji, aby wyśrodkować ją tak bardzo, jak to możliwe (jeśli używasz różnych czcionek ikon, pamiętaj, aby dostosować je odpowiednio, zmieniając górne i lewe wartości oraz rozmiar czcionki).
.ie8 .prefix-icon-arrow-down-fill:before,
.ie9 .prefix-icon-arrow-down-fill:before {
content: ")";
position: absolute;
top: 43%;
left: 93%;
font-size: 6px;
...
}
Możesz łatwo utworzyć i zastąpić strzałkę w tle lub strzałkę czcionki ikony, z każdą, którą chcesz, po prostu zmieniając ją w background-image
regule lub samodzielnie tworząc nowy plik czcionki ikony.