Як стилізувати <варіант> лише за допомогою CSS?


102

Примітка. Це питання не стосується створення спеціального спаду. Йдеться лише про можливості стильових <option>елементів у виділеному елементі в CSS

Як я можу стиль <option>s з <select>елемента з крос-браузерної сумісності? Я знаю багато способів JavaScript, які налаштовують спадне меню для перетворення в <li>яке я не прошу.

<select class="select">
    <option selected>Select</option>
    <option>Blue</option>
    <option >Red</option>
    <option>Green</option>
    <option>Yellow</option>
    <option>Brown</option>
</select>

Я запитую, що може бути можливим лише для CSS, сумісність для IE9 +, Firefox та Chrome.

введіть тут опис зображення

Я хочу, щоб такий стиль чи був максимально близьким.

введіть тут опис зображення

Я спробував тут http://jsfiddle.net/jitendravyas/juwz3/3/ , але Chrome не показує будь-яку стилізацію, окрім кольору шрифту, в той час як Firefox показує ще декілька. Як змусити роботу з обшивкою та обшивкою в Chrome також?


@ManseUK - це тільки <option>не всі випадає
— Jitendra Віас

2
@ManseUK: Я не впевнений, що це те саме. Це запитання задає, чи можна стилізувати <select>зовнішній вигляд елемента на сторінці. Це питання задає, чи можна стилізувати список <option>елементів.
— Енді Е

13
Заради бога, це НЕ дублікат БУДЬ-кого з двох пов'язаних питань (які до речі відрізняються один від одного). Один стосується виключно стилізації вибору, а не опції, в той час як цей запитує також про стилювання параметрів, а інший не має вимоги only-css / no-js.
— Маттео

12
Мені нудно бачити запитання, неправильно позначені як дублікати або неправильно закриті, залишаючись такими роками, незважаючи на те, що було доведено неправильно.
— Маттео

Відповіді:


70

EDIT 2015 трав

Відмова: Я взяв фрагмент із відповіді, зв'язаної нижче:

Важливе оновлення!

Крім WebKit, станом на Firefox 35 ми зможемо використовувати appearanceвластивість:

Використовуючи -moz-appearanceзі noneзначенням на комбобоці тепер видаліть спадну кнопку

Отже, для того, щоб приховати стиль за замовчуванням, це так само просто, як додати наступні правила до нашого елемента вибору:

select {
   -webkit-appearance: none;
   -moz-appearance: none;
   appearance: none;
}

Для підтримки IE 11 ви можете використовувати [ ::-ms-expand] [15].

select::-ms-expand { /* for IE 11 */
    display: none;
}

Стара відповідь

На жаль, те, що ви запитуєте, неможливо за допомогою чистого CSS. Однак тут є щось подібне, яке ви можете обрати як обхід. Перевірте прямий код нижче.

div { 
  margin: 10px;
  padding: 10px; 
  border: 2px solid purple; 
  width: 200px;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
}
div > ul { display: none; }
div:hover > ul {display: block; background: #f9f9f9; border-top: 1px solid purple;}
div:hover > ul > li { padding: 5px; border-bottom: 1px solid #4f4f4f;}
div:hover > ul > li:hover { background: white;}
div:hover > ul > li:hover > a { color: red; }
<div>
  Select
  <ul>
    <li><a href="#">Item 1</a></li>
    <li><a href="#">Item 2</a></li>
    <li><a href="#">Item 3</a></li>
  </ul>
</div>

EDIT

Ось питання, яке ви задали деякий час тому. Як стилізувати спад <select> за допомогою CSS лише без JavaScript? Як говориться там, лише в Chrome і певною мірою в Firefox ви можете досягти того, чого хочете. В іншому випадку, на жаль, не існує чистого CSS-рішення для перегляду вибраного браузера.


3
+1 дякую, що це гарний код. але в моєму випадку я хочу зробити це <select>. використання <div>семантично неправильно.
— Житендра Вяс

2
@JitendraVyas, я знаю, але, як я відповів, це неможливо. Те, що ви досягли на першій картині, - це найбільше, що ви можете зробити. Див. Редагування. До речі, я відповів і на ваше попереднє запитання, будь ласка, подивіться його.
— Савас Ведова

Частина "важливого оновлення" підказує, що ви можете розміщувати optionтеги за допомогою css, але ви не можете, ви можете лише стилювати selectтег. Що показано у цій відповіді
— svnm

Ось версія JavaScript у наведеному вище прикладі, яка додає зворотний виклик та деякі інші корисні функції: dinamidrive.com/dynamicindex1/ergodropdown.htm
— коко puffs

4

Не існує крос-браузерного способу стилізації елементів опцій, звичайно, не в межах вашого другого екрана екрана. Ви можете зробити їх жирними і встановити розмір шрифту, але це буде про це ...


2

Я грав із вибраними предметами раніше і не змінюючи функціональність за допомогою JavaScript, я не думаю, що це можливо в Chrome. Незалежно від того, чи використовуєте ви плагін або пишете власний код, CSS - це лише перехід на Chrome / Safari, і, як ви вже сказали, Firefox краще справляється з цим.


Видаліть останній абзац - URL недоступний в Інтернеті.
— кумархарш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.