Я б запропонував шахтне рішення, яке ви можете знайти в цьому репортажі на 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. Ці ІФ використовуються для приєднання конкретних класів до 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
правилі або створити новий файл шрифту значка самостійно.