这是我的HTML:

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

我想让产品的名称(即。'Product1', 'Product2',等等),以及它的类别(即。电子,体育等)斜体,只使用CSS。我发现了一个老问题,提到这是不可能使用HTML和CSS,但希望,现在有一个解决方案。


当前回答

正如已经提到的,唯一的方法是使用一个插件来替换<select>功能。

jQuery插件列表:http://plugins.jquery.com/tag/select/

看一下使用Select2 plugin: http://jsfiddle.net/swsLokfj/23/的例子

其他回答

该元素由操作系统呈现,而不是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]

不,这是不可能的,因为这些元素的样式是由用户的操作系统处理的。MSDN将在这里回答你的问题:

除了background-color和color,通过style对象应用于option元素的样式设置将被忽略。

你可以添加一个类并给出font-weight:700;在选择。但是通过使用这个,所有的文本将变成粗体。

它肯定会起作用。 选择选项是由OS而不是html呈现的。这就是为什么CSS样式没有效果,..一般 选项{font-size: value; background - color: colorCode; border - radius:价值;} 这将工作,但我们不能自定义填充,边距等。

下面的代码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>

(() => { const optionValues = document.querySelectorAll(".search-form__value"); const searchOptions = document.querySelector(".search-form__selector"); const dropdown = document.querySelector(".search-form__dropdown"); const input = document.getElementById("search-form-loc"); const selectorText = document.querySelector(".search-form__label--loc"); searchOptions.addEventListener("click", function () { dropdownHandler(); }); optionValues.forEach((option) => { option.addEventListener("click", function () { updateUI(input, selectorText, this); }); }); window.addEventListener("mouseup", function (event) { if (event.target != dropdown) { dropdown.classList.remove("search-form__dropdown--show"); } }); function dropdownHandler() { dropdown.classList.toggle("search-form__dropdown--show"); } function updateUI(input, selectorText, referedThis) { input.value = referedThis.textContent.trim(); selectorText.textContent = referedThis.textContent.trim(); dropdown.classList.remove("search-form__dropdown--show"); } })(); /* CSS Reset Starts */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: sans-serif; color: #777; background-color: slateblue !important; } /* CSS Reset Ends */ .search-form { display: flex; align-items: center; width: max-content; max-width: 700px; margin: 100px auto; background: #fff; } .search-form__label { margin-right: 40px; } .search-form__selector { display: flex; align-items: center; gap: 12px; cursor: pointer; font-size: 14px; padding: 12px 18px; background: #fff; position: relative; z-index: 1000; } .search-form__line { height: 100%; width: 1px; background: #777; margin-left: auto; } .search-form__icon { font-size: 24px; } /* Dropdown */ .search-form__dropdown { list-style: none; position: absolute; left: 0; top: 100%; box-shadow: 0 7px 30px -10px #96aa6480; width: 100%; min-width: max-content; transition: 0.4s; background-color: #fff; opacity: 0; visibility: hidden; z-index: 10; pointer-events: none; transform: translateY(20px); cursor: pointer; } .search-form__value { padding: 7px; } .search-form__value:hover { background: #0667d5; color: #fff; } .pos-rel { position: relative; } .search-form__dropdown--show { opacity: 1; visibility: visible; pointer-events: visible; -webkit-transform: translate(0); -ms-transform: translate(0); transform: translate(0); } <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" /> </head> <body> <form class="search-form"> <input type="hidden" name="search-form-loc" id="search-form-loc" /> <div class="pos-rel"> <div class="search-form__selector"> <p class="search-form__label search-form__label--loc">Select From List</p> <div class="search-form__line">&nbsp;</div> <i class="fa fa-caret-down search-form__icon"></i> </div> <ul class="search-form__dropdown"> <li class="search-form__value" data-loc="search-form-loc">UK</li> <li class="search-form__value" data-loc="search-form-loc">Barcelona</li> <li class="search-form__value" data-loc="search-form-loc">Brazil</li> <li class="search-form__value" data-loc="search-form-loc">Hungary</li> </ul> </div> </form> </body> </html>