这是我的HTML:

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

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


当前回答

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

其他回答

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

似乎我可以直接在Chrome或Firefox中为选择设置CSS。CSS和HTML代码提供如下:

. boldoption { font-weight: bold; 的 选择< > <option>一些规范-字体 <option>另一种规范-字体option</option> <option class=“boldoption”>一些勇敢的选择</option> 选择< - >

可以应用于<option>元素的样式属性很少。

这是因为这种类型的元素是一个“替换元素”的例子。它们依赖于操作系统,不是HTML/浏览器的一部分。它不能通过CSS样式。

有一些替换的插件/库看起来像<select>,但实际上是由常规的HTML元素组成的,可以设置样式。

一些属性可以为<option>标签设置样式:

字体类型 颜色 字体- * 背景颜色

此外,您可以使用自定义字体的个人<选项>标签,例如任何谷歌字体,材质图标或其他图标字体从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。

注意,自定义字体并不适用于移动选择。

这里留下一个快速的替代方法,使用表上的类切换。它的行为与选择非常相似,但是可以使用过渡、滤镜和颜色进行样式化,每个子元素都是独立的。

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>