Як стилізувати параметр елемента html "select"?


202

Ось мій HTML:

<select id="ddlProducts" name="ddProducts"> 
    <option>Product1 : Electronics </option>
    <option>Product2 : Sports </option>
</select>

Я хочу, щоб назва продукту (наприклад, "Product1", "Product2" тощо) була виділена жирним шрифтом, а його категорії (наприклад, Електроніка, Спорт тощо) мали курсивний текст, використовуючи лише CSS. Я знайшов старе питання, в якому згадувалося, що неможливо за допомогою HTML та CSS, але, сподіваємось, зараз є рішення.


Не впевнений у цьому. Я думаю, що ні. Для цього вам знадобиться якась магія JavaScript (jQuery).
Привид

6
варіанти досі так само дратівливі, як і раніше. Ви можете скористатись optgroup: htmlhelp.com/reference/html40/forms/optgroup.html, це дасть вам сміливу та курсивну категорію (як Електроніка), під яку потрапляє купа варіантів.
wolv2012

Відповіді:


200

Є лише кілька атрибутів стилю, які можна застосувати до <option>елемента.

Це тому, що цей тип елемента є прикладом "заміненого елемента". Вони залежать від ОС і не входять до HTML / браузера. Її неможливо створити через CSS.

Є додаткові модулі / бібліотеки, які схожі на, <select>але насправді складаються із звичайних HTMLелементів, які МОЖУТЬ бути стилізованими.


2
Така поведінка різниться в різних браузерах та різних ОС; варто уточнити, якщо ви говорите в основному про IE в Windows.
Вінс Боудрен

4
Можна зробити стиль select > option, але для цього немає надійного рішення для крос-браузера, і, як мінімум, для хромування ви можете принаймні налаштувати розмір шрифту, сімейство, фон та колір переднього плану. Можливо, ще декілька налаштувань, але такі речі, як набивання, наближення кольору та таке, що мені не вдалося змінити. Дійсно, можуть бути альтернативи, але залежно від проекту тег <select> може знадобитися, наприклад, для кутової перевірки чи іншої причини.
Феліпе

3
@none Я опублікував відповідь на теги опцій Styling . У ньому не показано, як стиль <option>, але він показує, як емулювати, <select>щоб ви могли стилювати параметри.
UndoingTech

3
Хоча це прийнята відповідь, можна OPTION
керувати

2
При впровадженні мобільних пристроїв це ще менш складно, оскільки елементи параметрів навіть не відображаються відносно вибору у потоці сторінки - він вказаний в окремому прокручуваному розділі в нижній частині екрана - стилізований зовсім інакше, ніж як ви очікуєте в традиційному браузері.
трепет

74

Ні, це неможливо, оскільки стилізацією цих елементів займається ОС користувача. MSDN відповість на ваше запитання тут :

За винятком background-colorта color, параметри стилю, застосовані через об’єкт стилю для елемента параметра, ігноруються.


тож висновок такий: "параметр select не може бути частково стилізований лише за допомогою CSS", правда ??? :(
MrClan

27
Важливим моментом тут є те, що їх можна стилізувати, лише дуже мінімально.
devios1

1
Щоб додати точку devios - нативний вибір може бути мінімально стилізований для Windows, але не обов'язково для інших ОС. Як згадується pumbo нижче, вам потрібно буде замінити вибір на інші елементи (як правило, ul) і дублювати функції вибору в JavaScript для повного контролю над стилями.
Бенджамін Робінсон

3
<option style = "color: 'red"; "> не працює для мене ... пропозиція?
fabio

1
style="background-color: red;color: red;"не працює для мене. EDIT: Після закриття консолі розробника стиль застосовано.
Чорний

33

Ви можете певною мірою стилізувати елементи опції.

Використовуючи тег * CSS, ви можете стилізувати параметри всередині вікна, який малює система.

Приклад:

#ddlProducts *
{
 border-radius:15px;
 background-color:red;
}

Це буде виглядати приблизно так:

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


2
Це вірно лише тому, що весь селектор націлений на тіньові внутрішні нутри DOM, ви можете націлювати на них вручну на браузер.
mystrdat

20

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

html

<select id="selectbox1">
    <option value="">Select an option&hellip;</option>
    <option value="aye">Aye</option>
    <option value="eh">Eh</option>
    <option value="ooh">Ooh</option>
    <option value="whoop">Whoop</option>
</select>
<select id="selectbox2">
    <option value="">Month&hellip;</option>
    <option value="january">January</option>
    <option value="february">February</option>
    <option value="march">March</option>
    <option value="april">April</option>
    <option value="may">May</option>
    <option value="june">June</option>
    <option value="july">July</option>
    <option value="august">August</option>
    <option value="september">September</option>
    <option value="october">October</option>
    <option value="november">November</option>
    <option value="december">December</option>
</select>

css

body {
    padding:50px;
    background-color:white;
}
.s-hidden {
    visibility:hidden;
    padding-right:10px;
}
.select {
    cursor:pointer;
    display:inline-block;
    position:relative;
    font:normal 11px/22px Arial, Sans-Serif;
    color:black;
    border:1px solid #ccc;
}
.styledSelect {
    position:absolute;
    top:0;
    right:0;
    bottom:0;
    left:0;
    background-color:white;
    padding:0 10px;
    font-weight:bold;
}
.styledSelect:after {
    content:"";
    width:0;
    height:0;
    border:5px solid transparent;
    border-color:black transparent transparent transparent;
    position:absolute;
    top:9px;
    right:6px;
}
.styledSelect:active, .styledSelect.active {
    background-color:#eee;
}
.options {
    display:none;
    position:absolute;
    top:100%;
    right:0;
    left:0;
    z-index:999;
    margin:0 0;
    padding:0 0;
    list-style:none;
    border:1px solid #ccc;
    background-color:white;
    -webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
    -moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
    box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
}
.options li {
    padding:0 6px;
    margin:0 0;
    padding:0 10px;
}
.options li:hover {
    background-color:#39f;
    color:white;
}

JS

// Iterate over each select element
$('select').each(function () {

    // Cache the number of options
    var $this = $(this),
        numberOfOptions = $(this).children('option').length;

    // Hides the select element
    $this.addClass('s-hidden');

    // Wrap the select element in a div
    $this.wrap('<div class="select"></div>');

    // Insert a styled div to sit over the top of the hidden select element
    $this.after('<div class="styledSelect"></div>');

    // Cache the styled div
    var $styledSelect = $this.next('div.styledSelect');

    // Show the first select option in the styled div
    $styledSelect.text($this.children('option').eq(0).text());

    // Insert an unordered list after the styled div and also cache the list
    var $list = $('<ul />', {
        'class': 'options'
    }).insertAfter($styledSelect);

    // Insert a list item into the unordered list for each select option
    for (var i = 0; i < numberOfOptions; i++) {
        $('<li />', {
            text: $this.children('option').eq(i).text(),
            rel: $this.children('option').eq(i).val()
        }).appendTo($list);
    }

    // Cache the list items
    var $listItems = $list.children('li');

    // Show the unordered list when the styled div is clicked (also hides it if the div is clicked again)
    $styledSelect.click(function (e) {
        e.stopPropagation();
        $('div.styledSelect.active').each(function () {
            $(this).removeClass('active').next('ul.options').hide();
        });
        $(this).toggleClass('active').next('ul.options').toggle();
    });

    // Hides the unordered list when a list item is clicked and updates the styled div to show the selected list item
    // Updates the select element to have the value of the equivalent option
    $listItems.click(function (e) {
        e.stopPropagation();
        $styledSelect.text($(this).text()).removeClass('active');
        $this.val($(this).attr('rel'));
        $list.hide();
        /* alert($this.val()); Uncomment this for demonstration! */
    });

    // Hides the unordered list when clicking outside of it
    $(document).click(function () {
        $styledSelect.removeClass('active');
        $list.hide();
    });

});

1
Ви можете, будь ласка, опублікувати код тут, тому що, можливо, якийсь день він буде видалений, але тут він залишиться в місці збереження
Mohammad Alabed

Це дуже динамічний спосіб робити те, що ви хочете, з вибором, якщо у вас буде кращий варіант, я буду радий бачити це як відповідь тут @ahnbizcad
DEV

17
Це НЕ рідний html <select>, він просто перетворює його з деяким кодом jQuery. Якщо ви збираєтеся це зробити, можливо, також використовуйте плагін jQuery, компонент React тощо, який обробляє клавіатуру UP / DOWN, typeahead / пошук тощо.
Джон Culviner

10

Ось кілька способів стилізації <option>разом із тим, <select>якщо ви використовуєте Bootstrap та / або jquery. Я розумію, що це не те, що задає оригінальний плакат, але я подумав, що можу допомогти іншим, хто натрапить на це питання.

Ви все ще можете досягти мети стилізації кожного <option>окремо, але може знадобитися також застосувати певний стиль <select>. Моя улюблена - бібліотека "Вибір завантаження", згадана нижче.


Бібліотека вибору завантажувальної програми (jquery)

Якщо ви вже використовуєте bootstrap, ви можете спробувати бібліотеку Select Bootstrap Select або бібліотеку нижче (оскільки вона має тему завантаження).

Зауважте, що ви можете стилізувати весь selectелемент або optionелементи окремо.

Приклади :

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

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

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

Залежності : потрібні jQuery v1.9.1 +, Bootstrap , компонент dropdown.js завантажувача Bootstrap та CSS Bootstrap

Сумісність : Не впевнений, але завантажувач говорить, що "підтримує останні, стабільні версії всіх основних браузерів і платформ"

Демо : https://developer.snapappointments.com/bootstrap-select/examples/

.special {
  font-weight: bold !important;
  color: #fff !important;
  background: #bc0000 !important;
  text-transform: uppercase;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/css/bootstrap-select.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/js/bootstrap-select.min.js"></script>

<select class="selectpicker">
  <option>Mustard</option>
  <option class="special">Ketchup</option>
  <option style="background: #5cb85c; color: #fff;">Relish</option>
</select>


Select2 (JS lib)

Існує бібліотека, яку можна використовувати під назвою Select2 .

select2

Залежності : Бібліотека лише JS + CSS + HTML (не вимагає JQuery).

Сумісність : IE 8+, Chrome 8+, Firefox 10+, Safari 3+, Opera 10.6+

Демо : https://select2.org/getting-started/basic-usage

Також доступна тема завантажувальної програми.

Немає прикладу завантаження:

$(function() {
  var $select = $('.select2');
  
  $select.select2({
    theme: 'paper'
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.7/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.7/css/select2.min.css" rel="stylesheet"/>

<select class="select2 form-control" placeholder="Country">
  <optgroup label="Alaskan/Hawaiian Time Zone">
    <option value="AK">Alaska</option>
    <option value="HI">Hawaii</option>
  </optgroup>
  <optgroup label="Pacific Time Zone">
    <option value="CA">California</option>
    <option value="NV">Nevada</option>
    <option value="OR">Oregon</option>
    <option value="WA">Washington</option>
  </optgroup>
</select>

Приклад завантаження:

$(function() {
  var $select = $('.select2');
  
  $select.select2({
    theme: 'paper'
  });
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.2/paper/bootstrap.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.7/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.7/css/select2.min.css" rel="stylesheet"/>

<select class="select2 form-control" placeholder="Country">
  <optgroup label="Alaskan/Hawaiian Time Zone">
    <option value="AK">Alaska</option>
    <option value="HI">Hawaii</option>
  </optgroup>
  <optgroup label="Pacific Time Zone">
    <option value="CA">California</option>
    <option value="NV">Nevada</option>
    <option value="OR">Oregon</option>
    <option value="WA">Washington</option>
  </optgroup>
</select>


MDBootstrap ($ & Bootstrap & JQuery)

Якщо у вас є додаткові гроші, ви можете використовувати преміум-бібліотеку MDBootstrap . (Це цілий комплект інтерфейсу користувача , тому він не легкий)

Це дозволяє стилізувати елементи вибору та опції за допомогою дизайну Матеріал .

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

Є безкоштовна версія, але вона не дозволить вам використовувати гарний дизайн матеріалу!

Залежності : Bootstrap 4 , JQuery,

Сумісність : "підтримує останні, стабільні версії всіх основних браузерів і платформ."

Демонстрація : https://mdbootstrap.com/docs/jquery/forms/select/#color


19
Оскільки питання стосується стилізації елемента опції , а не елемента вибору .
Jsalinas

5
Ця відповідь вводить в оману, оскільки, якщо ви явно показуєте, що ви можете стилізувати вибір , ви стверджуєте, що варіант - це те, що можна стилізувати, навіть якщо це елемент ОС, який взагалі приймає лише мінімальні стилі CSS.
Ендрю Грей

@Jsalinas вибачте, моя попередня відповідь була жорстокою. Я замінив його на той, який, сподіваюся, кращий.
Кеті

1
Чудова відповідь! Гарні приклади!
cskwg

Select2 4.0 вже не є чистим, як тепер будується на jQuery.
galmok

9

Здається, я можу просто встановити CSS selectбезпосередньо в Chrome. CSS та HTML-код, надані нижче:

.boldoption {
	font-weight: bold;
}
<select>
	<option>Some normal-font option</option>
	<option>Another normal-font option</option>
	<option class="boldoption">Some bold option</option>
</select>
введіть тут опис зображення


2
@ Мухаммед Аль Халіл: Я оновив приклад, щоб бути більш зрозумілим, оскільки вибраний на даний момент варіант також має свій стиль. Якщо це не працює, тоді я підозрюю проблеми сумісності браузера. = \
HoldOffHunger

3
@Akash: Цікаво, що це працювало на Firefox, перш ніж випустити Firefox Quantum, і він досі працює на Chrome (60% + користувачів). Б'юсь об заклад, що це помилка!
HoldOffHunger

1
Це працює лише для випадаючого меню, а не того, що відображається як вибрано. Дуже погано.
WebDude0482

3

Як вже було сказано, єдиний спосіб - використовувати плагін, який замінює <select>функціональність.

Список плагінів jQuery: http://plugins.jquery.com/tag/select/

Погляньте на приклад за допомогою Select2плагіна: http://jsfiddle.net/swsLokfj/23/


У поточному jQuery Select2 4.x спосіб цього зробити зараз інший. Див .: приклад , документи .
таніус

3

Bootstrap дозволяє використовувати стилізацію за допомогою даних:

<select class="selectpicker">
  <option data-content="<span class='label label-success'>Relish</span>">Relish</option>
</select>

Приклад: https://silviomoreto.github.io/bootstrap-select/examples/


9
HTML, вбудований в атрибути даних, змушує мене відчувати себе дуже пристрасно.
Бен Халл

2

Деякі властивості можна стилізувати для <option>тегу:

  • font-family
  • color
  • font-*
  • background-color

Також ви можете використовувати спеціальний шрифт для окремих <option>тегів, наприклад, будь-який шрифт google , Material Icons або інші шрифти значків із icomoon або подібних. (Це може стати в нагоді для вибору шрифту тощо)

Враховуючи це, ви можете створити стек сімейства шрифтів і вставити піктограми в <option>теги, наприклад.

    <select>
        <option style="font-family: 'Icons', 'Roboto', sans-serif;">a    ★★★</option>
        <option style="font-family: 'Icons', 'Roboto', sans-serif;">b    ★★★★</option>
    </select>

звідки береться, Iconsа решта - звідки Roboto.

Зауважте, що спеціальні шрифти не працюють для вибору мобільних пристроїв.


<option style = "color: 'red"; "> не працює для мене ... пропозиція?
Фабіо

1
Видаліть цитати над red: <option style = "color: red;">
dy_

1

Насправді ви можете додати: до та: після та накреслити їх. Принаймні, це щось

option{
    font-size:18px;
    background-color:#ffffff;
}
option:before{
    content: ">";
    font-size:20px;
    display:none;
    padding-right:10px;
    padding-left:5px;
    color:#fff;
}
option:hover:before{
    display:inline;
}


1

Настав 2017 рік, і можна націлити конкретні варіанти вибору. У моєму проекті у мене є таблиця з класом = "варіації" , а параметри вибору знаходяться у комірці таблиці td = "значення" , а у виділення є ID select # pa_color . Елемент параметра також має клас class = "приєднаний" (серед інших тегів класу). Якщо користувач увійшов як оптовий клієнт, він може побачити всі варіанти кольорів. Але роздрібним клієнтам заборонено купувати 2 кольорові варіанти, тому я їх відключив

<option class="attached" disabled>color 1</option>
<option class="attached" disabled>color 2</option>

Це зайняло трохи логіки, але ось як я націлив опції вибору інвалідів.

CSS

table.variations td.value select#pa_color option.attached:disabled {
display: none !important;
}

З цим мої варіанти кольорів видно лише оптовим покупцям.


1

Залишаючи тут швидку альтернативу, використовуючи перемикання класів на столі. Поведінка дуже схожа на вибір, але їх можна стилізувати за допомогою переходу, фільтрів та кольорів, кожен з дітей окремо.

function toggleSelect(){ 
 if (store.classList[0] === "hidden"){
    store.classList = "viewfull"
  }
  else {
    store.classList = "hidden"
  }
}
#store {
  overflow-y: scroll;
  max-height: 110px;
  max-width: 50%
 }
 
.hidden {
  display: none
 }
 
.viewfull {
  display: block
}

#store :nth-child(4) {
  background-color: lime;
}

span {font-size:2rem;cursor:pointer}
<span onclick="toggleSelect()"></span>
 <div id="store" class="hidden">
 
<ul><li><a href="#keylogger">keylogger</a></li><li><a href="#1526269343113">1526269343113</a></li><li><a href="#slow">slow</a></li><li><a href="#slow2">slow2</a></li><li><a href="#Benchmark">Benchmark</a></li><li><a href="#modal">modal</a></li><li><a href="#buma">buma</a></li><li><a href="#1526099371108">1526099371108</a></li><a href="#1526099371108o">1526099371108o</a></li><li><a href="#pwnClrB">pwnClrB</a></li><li><a href="#stars%20u">stars%20u</a></li><li><a href="#pwnClrC">pwnClrC</a></li><li><a href="#stars ">stars </a></li><li><a href="#wello">wello</a></li><li><a href="#equalizer">equalizer</a></li><li><a href="#pwnClrA">pwnClrA</a></li></ul>
 
 </div>


1

Ви можете використовувати вбудовані стилі, щоб додати стиль стилів до <option>тегів.

Наприклад: <option style="font-weight:bold;color:#09C;">Option 1</option> Це стосується стилів лише до цього конкретного <option>елемента.

Тоді ви можете використовувати трохи магії javascript, щоб застосувати стилі вбудованого характеру до всіх <option>елементів у <select>тегу так:

var select = $(document).getElementById('#select-element-id')

var option = select.children('#option-element-id')

option.css('font-weight', 'bold')

option.css('font-size', '24px')

Ви також <option value="" disabled> <br> </option>можете додати перерив між параметрами.


0

Цей елемент надається ОС, а не HTML. Його не можна стилізувати за допомогою CSS.

	$(function() {
    var clicky;
    var t=0;
    $(document).mousedown(function(e) {
        clicky = $(e.target);
    });
    $(document).mouseup(function(e) {
        clicky = null;
    });

    $("select").focusout(function(e) {
        if (typeof clicky.attr('id') !== typeof undefined && clicky.attr('id') !== false) {
        	$(this).parents().children("span.selected").html(clicky.html());
        	$(this).children('option[value="'+clicky.attr('id')+'"]').prop('selected', true);
		}
        
        $(this).parents().children("span.lists").html('');
        

    });
    $('select > option').text(function(i, text) {
				var attr = $(this).attr('selected');
				if (typeof attr !== typeof undefined && attr !== false) {
        				$(this).parents().parents().children("span.selected").html(text);
				}
	});

		$("select").focusin(function(){
			$(this).children('option').text(function(i, text) {
    			$(this).parents().children("span.lists").append("<span class='item' id='"+$(this).attr('value')+"'>"+text+"</span>");
				});
		});

	});
select {
  width: 0px;
  height: 0px;
  overflow:hidden;
  outline: none;
  border: none;
  appearance:none;
  -moz-appearance: none;

}
label{
	display: inline-block;
	padding: 5px 10px;
	position: relative;
	width: 100px;
	height: 20px;
	background-color:#ccc;

}
label .selected{
	display: inline-block;
	overflow: hidden;
	width: 100%;
	height: 100%;
}
label span.lists{
	width: 100%;
	display: inline-block;
	position: absolute;
	top: 100%;
	left: 0px;
	box-shadow: 0px 0px 2px 0px #ccc;
	background-color:#fff;
	z-index: 9;
}
label span.item{
	display: inline-block;
	width: 100%;
	border-bottom: 1px solid #ccc;
}
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
	<form action="?" method="GET">
	<label><span class="selected">select..</span> <span class="lists"></span>
	<select name="test">
		<option value="1">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</option>
		<option value="2" selected>item 2</option>
		<option value="3">item 3</option>
		<option value="4">item 4</option>
	</select>
	</label><br>
	<label><span class="selected">select..</span> <span class="lists"></span>
	<select name="test2">
		<option value="1">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</option>
		<option value="2">item 2</option>
		<option value="3" selected>item 3</option>
		<option value="4">item 4</option>
	</select>
	</label><br>
	<button>Submit</button>
</form>

</body>
</html>

спробуйте це може вам допомогти

[ https://codepen.io/venu9l/pen/jeNXzY][1]

0

Ви можете додати клас та надає шрифт: 700; у варіанті. Але використовуючи це, весь текст стане жирним.


0

Це обов'язково спрацює. Опція вибору надається ОС, а не html. Ось чому стиль CSS не діє, .. як правило, option{font-size : value ; background-color:colorCode; border-radius:value; }
це спрацює, але ми не можемо налаштувати набивання, запас тощо.

Нижче коду 100% працює над налаштуванням вибраного тегу, взятого з цього прикладу

var x, i, j, selElmnt, a, b, c;
/*look for any elements with the class "custom-select":*/
x = document.getElementsByClassName("custom-select");
for (i = 0; i < x.length; i++) {
  selElmnt = x[i].getElementsByTagName("select")[0];
  /*for each element, create a new DIV that will act as the selected item:*/
  a = document.createElement("DIV");
  a.setAttribute("class", "select-selected");
  a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
  x[i].appendChild(a);
  /*for each element, create a new DIV that will contain the option list:*/
  b = document.createElement("DIV");
  b.setAttribute("class", "select-items select-hide");
  for (j = 1; j < selElmnt.length; j++) {
    /*for each option in the original select element,
    create a new DIV that will act as an option item:*/
    c = document.createElement("DIV");
    c.innerHTML = selElmnt.options[j].innerHTML;
    c.addEventListener("click", function(e) {
        /*when an item is clicked, update the original select box,
        and the selected item:*/
        var y, i, k, s, h;
        s = this.parentNode.parentNode.getElementsByTagName("select")[0];
        h = this.parentNode.previousSibling;
        for (i = 0; i < s.length; i++) {
          if (s.options[i].innerHTML == this.innerHTML) {
            s.selectedIndex = i;
            h.innerHTML = this.innerHTML;
            y = this.parentNode.getElementsByClassName("same-as-selected");
            for (k = 0; k < y.length; k++) {
              y[k].removeAttribute("class");
            }
            this.setAttribute("class", "same-as-selected");
            break;
          }
        }
        h.click();
    });
    b.appendChild(c);
  }
  x[i].appendChild(b);
  a.addEventListener("click", function(e) {
      /*when the select box is clicked, close any other select boxes,
      and open/close the current select box:*/
      e.stopPropagation();
      closeAllSelect(this);
      this.nextSibling.classList.toggle("select-hide");
      this.classList.toggle("select-arrow-active");
  });
}
function closeAllSelect(elmnt) {
  /*a function that will close all select boxes in the document,
  except the current select box:*/
  var x, y, i, arrNo = [];
  x = document.getElementsByClassName("select-items");
  y = document.getElementsByClassName("select-selected");
  for (i = 0; i < y.length; i++) {
    if (elmnt == y[i]) {
      arrNo.push(i)
    } else {
      y[i].classList.remove("select-arrow-active");
    }
  }
  for (i = 0; i < x.length; i++) {
    if (arrNo.indexOf(i)) {
      x[i].classList.add("select-hide");
    }
  }
}
/*if the user clicks anywhere outside the select box,
then close all select boxes:*/
document.addEventListener("click", closeAllSelect);
/*the container must be positioned relative:*/
.custom-select {
  position: relative;
  font-family: Arial;
}
.custom-select select {
  display: none; /*hide original SELECT element:*/
}
.select-selected {
  background-color: DodgerBlue;
}
/*style the arrow inside the select element:*/
.select-selected:after {
  position: absolute;
  content: "";
  top: 14px;
  right: 10px;
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-color: #fff transparent transparent transparent;
}
/*point the arrow upwards when the select box is open (active):*/
.select-selected.select-arrow-active:after {
  border-color: transparent transparent #fff transparent;
  top: 7px;
}
/*style the items (options), including the selected item:*/
.select-items div,.select-selected {
  color: #ffffff;
  padding: 8px 16px;
  border: 1px solid transparent;
  border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
  cursor: pointer;
}
/*style items (options):*/
.select-items {
  position: absolute;
  background-color: DodgerBlue;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 99;
}
/*hide the items when the select box is closed:*/
.select-hide {
  display: none;
}
.select-items div:hover, .same-as-selected {
  background-color: rgba(0, 0, 0, 0.1);
}
<div class="custom-select" style="width:200px;">
  <select>
    <option value="0">Select car:</option>
    <option value="1">Audi</option>
    <option value="2">BMW</option>
    <option value="3">Citroen</option>
    <option value="4">Ford</option>
    <option value="5">Honda</option>
    <option value="6">Jaguar</option>
    <option value="7">Land Rover</option>
    <option value="8">Mercedes</option>
    <option value="9">Mini</option>
    <option value="10">Nissan</option>
    <option value="11">Toyota</option>
    <option value="12">Volvo</option>
  </select>
</div>


З перегляду: Привіт, будь ласка, не відповідайте лише вихідним кодом. Спробуйте надати приємний опис про те, як працює ваше рішення. Дивіться: Як написати гарну відповідь? . Дякую
sɐunıɔ ןɐ qɐp


0

Навіть якщо властивостей змінити не так багато, але наступний стиль можна досягти лише за допомогою css:

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

HTML:

<div class="options">
    <select>
        <option value="">Apple</option>
        <option value="">Banana</option>
        <option value="">Orange</option>
        <option value="">Mango</option>
    </select>
</div>

CSS:

.options {

    border: 1px solid #e5e5e5;
    padding: 10px;

    select {
        font-size: 14px;
        border: none;
        width: 100%;
        background: white;
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.