代码之家  ›  专栏  ›  技术社区  ›  Isa

有没有办法不使用代码来更改<select>所选项目的文本颜色[[副本]

  •  0
  • Isa  · 技术社区  · 7 年前

    以下是我的HTML:

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

    我想将产品的名称(即“Product1”、“Product2”等)加粗,并将其类别(即。电子、体育等)斜体,仅使用CSS。我发现一个老问题提到使用HTML和CSS是不可能的,但希望现在有一个解决方案。

    0 回复  |  直到 7 年前
        1
  •  253
  •   TylerH Ash Burlaczenko    5 年前

    只有少数样式属性可以应用于 <option> 元素。

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

        2
  •  91
  •   georgeawg    6 年前

    不,这是不可能的,因为这些元素的样式是由用户的操作系统处理的。 MSDN will answer your question here :

    background-color color

        3
  •  36
  •   Zoron19    5 年前

    可以在某种程度上设置选项元素的样式。

    使用 * CSS选择器您可以在系统绘制的框中设置选项的样式。

    例子:

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

    enter image description here

        4
  •  22
  •   Anahit Ghazaryan    11 年前

    Fiddle

    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();
        });
    
    });
    
        5
  •  15
  •   Katie    7 年前

    这里有一些风格的方法 <option> 以及 <select>

    您仍然可以实现为每个 < 但可能需要对 < 也。我最喜欢的是下面提到的“Bootstrap Select”库。


    如果您已经在使用引导,可以尝试 Bootstrap Select 图书馆

    请注意,您可以设置整个 select 元素,或 option 元素分开。

    示例 :

    enter image description here

    enter image description here

    enter image description here

    依赖项 jQuery查询 引导

    兼容性 :不确定,但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>

    选择2(JS lib)

    有一个图书馆你可以用,叫做 Select2

    select2

    依赖项

    兼容性 :IE 8+、Chrome 8+、Firefox 10+、Safari 3+、Opera 10.6+

    演示 https://select2.org/getting-started/basic-usage

    还有一个 bootstrap theme 可用。

    无引导示例:

    $(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>

    var$select=$('.select2');
    
    $select.select2选择({
    });
    <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($&引导和;(JQuery)

    MDBootstrap . (这是一个 整个UI工具包 ,所以不轻)

    这允许您使用 Material design .

    enter image description here

    有一个免费版本,但它不允许你使用漂亮的材料设计!

    : 引导4 ,JQuery,

    : "supports the latest, stable releases of all major browsers and platforms."

    演示 : https://mdbootstrap.com/docs/jquery/forms/select/#color

        6
  •  9
  •   HoldOffHunger Lux    7 年前

    好像我可以为 select 直接在铬中。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>
    enter image description here
        7
  •  4
  •   pumbo    11 年前

    如前所述,唯一的方法是使用一个插件 <select>

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

    看一看使用 Select2 http://jsfiddle.net/swsLokfj/23/

        8
  •  3
  •   dy_    10 年前

    可以为某些属性设置样式 <option>

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

    <选项> 标签,例如任何 google font , Material Icons 或其他图标字体 icomoon 或者类似的(对于字体选择器等来说可能很方便。)

    考虑到这一点,您可以创建字体系列堆栈并在其中插入图标 <选项> 标签,例如。

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

    哪里 ☠是从 Icons 其余的是从 Roboto .

    请注意,尽管自定义字体不适用于mobile select。

        9
  •  3
  •   Bhetzie    9 年前

    引导允许您通过数据内容使用样式:

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

    https://silviomoreto.github.io/bootstrap-select/examples/

        10
  •  2
  •   GucciBananaKing99    5 年前

    这就是你要找的吗?我用jQuery做到了!

    运行代码段

    $(".custom-select").each(function() {
        var classes = $(this).attr("class"),
            id      = $(this).attr("id"),
            name    = $(this).attr("name");
        var template =  '<div class="' + classes + '">';
        template += '<span class="custom-select-trigger">' + $(this).attr("placeholder") + '</span>';
        template += '<div class="custom-options">';
        $(this).find("option").each(function() {
            template += '<span class="custom-option ' + $(this).attr("class") + '" data-value="' + $(this).attr("value") + '">' + $(this).html() + '</span>';
        });
        template += '</div></div>';
    
        $(this).wrap('<div class="custom-select-wrapper"></div>');
        $(this).hide();
        $(this).after(template);
    });
    $(".custom-option:first-of-type").hover(function() {
        $(this).parents(".custom-options").addClass("option-hover");
    }, function() {
        $(this).parents(".custom-options").removeClass("option-hover");
    });
    $(".custom-select-trigger").on("click", function() {
        $('html').one('click',function() {
            $(".custom-select").removeClass("opened");
        });
        $(this).parents(".custom-select").toggleClass("opened");
        event.stopPropagation();
    });
    $(".custom-option").on("click", function() {
        $(this).parents(".custom-select-wrapper").find("select").val($(this).data("value"));
        $(this).parents(".custom-options").find(".custom-option").removeClass("selection");
        $(this).addClass("selection");
        $(this).parents(".custom-select").removeClass("opened");
        $(this).parents(".custom-select").find(".custom-select-trigger").text($(this).text());
    });
    body {
    font-family: 'Roboto', sans-serif;
    }
    
     .custom-select-wrapper {
            position: relative;
            display: inline-block;
            user-select: none;
        }
        .custom-select-wrapper select {
            display: none;
        }
        .custom-select {
            position: relative;
            display: inline-block;
        }
        .custom-select-trigger {
            position: relative;
            display: block;
            width: 170px;
            padding: 0 84px 0 22px;
            font-size: 19px;
            font-weight: 300;
            color: #5f5f5f;
            line-height: 50px;
            background: #EAEAEA;
            border-radius: 4px;
            cursor: pointer;
            margin-left:20px;
            border: 1px solid #5f5f5f;
            transition: all 0.3s;
        }
    
        .custom-select-trigger:hover {
            background-color: #d9d9d9;
            transition: all 0.3s;
        }
    
        .custom-select-trigger:after {
            position: absolute;
            display: block;
            content: '';
            width: 10px; height: 10px;
            top: 50%; right: 25px;
            margin-top: -3px;
            border-bottom: 1px solid #5f5f5f;
            border-right: 1px solid #5f5f5f;
            transform: rotate(45deg) translateY(-50%);
            transition: all 0.4s ease-in-out;
            transform-origin: 50% 0;
        }
        .custom-select.opened .custom-select-trigger:after {
            margin-top: 3px;
            transform: rotate(-135deg) translateY(-50%);
        }
        .custom-options {
            position: absolute;
            display: block;
            top: 100%; left: 0; right: 0;
            margin: 15px 0;
            border: 1px solid #b5b5b5;
            border-radius: 4px;
            box-sizing: border-box;
            box-shadow: 0 2px 1px rgba(0,0,0,.07);
            background: #fff;
            transition: all 0.4s ease-in-out;
            margin-left: 20px;
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
            transform: translateY(-15px);
        }
        .custom-select.opened .custom-options {
            opacity: 1;
            visibility: visible;
            pointer-events: all;
            transform: translateY(0);
        }
        .custom-options:before {
            position: absolute;
            display: block;
            content: '';
            bottom: 100%; right: 25px;
            width: 7px; height: 7px;
            margin-bottom: -4px;
            border-top: 1px solid #b5b5b5;
            border-left: 1px solid #b5b5b5;
            background: #fff;
            transform: rotate(45deg);
            transition: all 0.4s ease-in-out;
        }
        .option-hover:before {
            background: #f9f9f9;
        }
        .custom-option {
            position: relative;
            display: block;
            padding: 0 22px;
            border-bottom: 1px solid #b5b5b5;
            font-size: 18px;
            font-weight: 600;
            color: #b5b5b5;
            line-height: 47px;
            cursor: pointer;
            transition: all 0.15s ease-in-out;
        }
        .custom-option:first-of-type {
            border-radius: 4px 4px 0 0;
        }
        .custom-option:last-of-type {
            border-bottom: 0;
            border-radius: 0 0 4px 4px;
        }
        .custom-option:hover,
        .custom-option.selection {
            background: #f2f0f0;
        }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <select name="sources" id="sources" class="custom-select sources" placeholder="My Categories">
        <option value="categoryOne">Category 1</option>
        <option value="categoryTwo">Category 2</option>
        <option value="categoryThree">Category 3</option>
        <option value="categoryFour">Category 4</option>
    
    </select>
        11
  •  2
  •   Mark Schultheiss    5 年前

    实际上,您可以添加:before和:after并设置它们的样式。至少它是个东西

    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;
    }
    <select id="ddlProducts" name="ddProducts">
      <option>Product1 : Electronics </option>
      <option>Product2 : Sports </option>
    </select>
        12
  •  1
  •   Jithin Raj P R    8 年前

    现在是2017年,有可能针对特定的选择选项。在我的项目中,我有一个带有 ,选择选项位于表格单元格中 ,并且select具有一个ID 选择#pa#U颜色 . option=“附加” (在其他类标记中)。 如果用户以批发客户身份登录,则可以看到所有颜色选项。但是零售客户不允许购买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;
    }
    

    因此,我的颜色选择只有批发客户才能看到。

        13
  •  1
  •   NVRM    8 年前

    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>
        14
  •  1
  •   Vinayak Mukherjee    8 年前

    可以使用内联样式将自定义样式添加到 <option> 标签。

    <option style="font-weight:bold;color:#09C;">Option 1</option> 这会将样式应用于此特定 <

    然后您可以使用一点javascript魔术将内联样式应用到所有 < 内部元素 <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> 在选项之间添加换行符。

        15
  •  1
  •   nircraft    7 年前

    这肯定有用。 不是通过html。这就是为什么CSS样式不起作用,。。通常地 option{font-size : value ; background-color:colorCode; border-radius:value; }
    这将工作,但我们不能自定义的填充,边距等。。

    下面的代码100%的工作,以自定义选择标签采取从 this example

    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>
        16
  •  1
  •   OXiGEN Rounin    5 年前

    enter image description here

    .options {
      border: 1px solid #e5e5e5;
      padding: 10px;
    }
    
    select {
      font-size: 14px;
      border: none;
      width: 100%;
      background: white;
    }
    <div class="options">
      <select>
        <option value="">Apple</option>
        <option value="">Banana</option>
        <option value="">Orange</option>
        <option value="">Mango</option>
      </select>
    </div>
        17
  •  0
  •   Venkat G    7 年前

    此元素由操作系统呈现,而不是由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]
    
        18
  •  0
  •   Anas Chaudhary    7 年前

    您可以添加一个类并给出字体-weight:700; 在选项中。但通过使用这个,所有的文字都会变得粗体。