How to style the option of a html “select”?












123















Here's my html :



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


Now, what I want is to make the name of the product (i.e. 'Product1', 'Product2' , etc) bold, and its categories(viz. Electronics, Sports, etc) italicized, using css only. I found a similar question about an year old, but as mentioned there, it's just not possible using HTML and CSS. Hopefully, there's a solution now. Any hint, quirk or trick would be appreciated. Thanks.










share|improve this question

























  • Not sure about this one. By I think not. You'll need some JavaScript (jQuery) magic for that to happen.

    – Madara Uchiha
    Aug 26 '11 at 18:04






  • 5





    options are still just as annoying to style as they have ever been. what you may want to use is an optgroup: htmlhelp.com/reference/html40/forms/optgroup.html this will give you a bold and italicized category (like Electronics) under which a bunch of options fall.

    – wolv2012
    Aug 26 '11 at 18:07
















123















Here's my html :



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


Now, what I want is to make the name of the product (i.e. 'Product1', 'Product2' , etc) bold, and its categories(viz. Electronics, Sports, etc) italicized, using css only. I found a similar question about an year old, but as mentioned there, it's just not possible using HTML and CSS. Hopefully, there's a solution now. Any hint, quirk or trick would be appreciated. Thanks.










share|improve this question

























  • Not sure about this one. By I think not. You'll need some JavaScript (jQuery) magic for that to happen.

    – Madara Uchiha
    Aug 26 '11 at 18:04






  • 5





    options are still just as annoying to style as they have ever been. what you may want to use is an optgroup: htmlhelp.com/reference/html40/forms/optgroup.html this will give you a bold and italicized category (like Electronics) under which a bunch of options fall.

    – wolv2012
    Aug 26 '11 at 18:07














123












123








123


28






Here's my html :



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


Now, what I want is to make the name of the product (i.e. 'Product1', 'Product2' , etc) bold, and its categories(viz. Electronics, Sports, etc) italicized, using css only. I found a similar question about an year old, but as mentioned there, it's just not possible using HTML and CSS. Hopefully, there's a solution now. Any hint, quirk or trick would be appreciated. Thanks.










share|improve this question
















Here's my html :



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


Now, what I want is to make the name of the product (i.e. 'Product1', 'Product2' , etc) bold, and its categories(viz. Electronics, Sports, etc) italicized, using css only. I found a similar question about an year old, but as mentioned there, it's just not possible using HTML and CSS. Hopefully, there's a solution now. Any hint, quirk or trick would be appreciated. Thanks.







html css drop-down-menu






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 9 '16 at 16:31









Shaggy

9841631




9841631










asked Aug 26 '11 at 18:02









MrClanMrClan

1,74451835




1,74451835













  • Not sure about this one. By I think not. You'll need some JavaScript (jQuery) magic for that to happen.

    – Madara Uchiha
    Aug 26 '11 at 18:04






  • 5





    options are still just as annoying to style as they have ever been. what you may want to use is an optgroup: htmlhelp.com/reference/html40/forms/optgroup.html this will give you a bold and italicized category (like Electronics) under which a bunch of options fall.

    – wolv2012
    Aug 26 '11 at 18:07



















  • Not sure about this one. By I think not. You'll need some JavaScript (jQuery) magic for that to happen.

    – Madara Uchiha
    Aug 26 '11 at 18:04






  • 5





    options are still just as annoying to style as they have ever been. what you may want to use is an optgroup: htmlhelp.com/reference/html40/forms/optgroup.html this will give you a bold and italicized category (like Electronics) under which a bunch of options fall.

    – wolv2012
    Aug 26 '11 at 18:07

















Not sure about this one. By I think not. You'll need some JavaScript (jQuery) magic for that to happen.

– Madara Uchiha
Aug 26 '11 at 18:04





Not sure about this one. By I think not. You'll need some JavaScript (jQuery) magic for that to happen.

– Madara Uchiha
Aug 26 '11 at 18:04




5




5





options are still just as annoying to style as they have ever been. what you may want to use is an optgroup: htmlhelp.com/reference/html40/forms/optgroup.html this will give you a bold and italicized category (like Electronics) under which a bunch of options fall.

– wolv2012
Aug 26 '11 at 18:07





options are still just as annoying to style as they have ever been. what you may want to use is an optgroup: htmlhelp.com/reference/html40/forms/optgroup.html this will give you a bold and italicized category (like Electronics) under which a bunch of options fall.

– wolv2012
Aug 26 '11 at 18:07












17 Answers
17






active

oldest

votes


















138














In general, you can't. This element is and example of a "replaced element", these are OS-dependent and are not part of the HTML/browser. It cannot be styled via CSS.



There are replacement plug-ins/libraries that look like a <select> but are actually composed of regular HTML elements that CAN be styled.






share|improve this answer





















  • 35





    replacement plug-ins like???

    – MrClan
    Aug 26 '11 at 18:07






  • 2





    This behaviour varies across different browsers and different OSes; it's worth clarifying if you're talking mainly about IE on Windows.

    – Vince Bowdren
    Apr 19 '13 at 9:10






  • 4





    You can style select > option, but there are no reliable crossbrowser solution for doing so and, on chrome at least you can at most customize font size, family, background and foreground color. Maybe some more tweaks, but things as padding, hover color and such I couldn't succeed on changing. Indeed there might be alternatives, but depending on the project the <select> tag might be necessary for example for angular validation or some other reason.

    – Felype
    Jul 6 '15 at 14:49






  • 25





    Is it possible in 2016 to style it???

    – eugen sunic
    Dec 24 '15 at 14:09






  • 3





    @none I have posted an answer to Styling option tags. It does not show how to style <option>, but it does show how to emulate <select> so you can style the options.

    – UndoingTech
    Apr 5 '16 at 18:55



















49














No, it's not possible, as the styling for these elements is handled by the user's OS. MSDN will answer your question here:




Except for background-color and color, style settings applied through the style object for the option element are ignored.







share|improve this answer


























  • so the conclusion is : "a select's option cannot be partially styled just with CSS", right??? :(

    – MrClan
    Aug 29 '11 at 7:19






  • 17





    The important point here is that they can be styled, only very minimally.

    – devios1
    Jan 2 '13 at 19:07






  • 1





    To add to devios's point -- the native select can be minimally styled for Windows, but not necessarily for other OSes. As pumbo mentions below, you'll need to swap out the select for other elements (usually an ul) and duplicate select functionality in JavaScript for full control over styles.

    – Benjamin Robinson
    Jul 14 '16 at 17:37






  • 2





    <option style="color: 'red';"> doesn't works for me... suggestion?

    – fabio
    Jan 6 '17 at 11:22






  • 2





    @fabio remove ' ' from red...

    – b.doe
    Mar 30 '17 at 7:26



















24














You can style the option elements to some extent.



Using the * CSS tag you can style the options inside the box that is drawn by the system.



Example:



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


That will look like this:



enter image description here






share|improve this answer


























  • That is true only because the all selector targets the shadow DOM innards, you can target those manually per browser.

    – mystrdat
    Aug 6 '14 at 12:51



















21














I found and using this good example of styling the selects and options.You can do with this select all you want.Here is the 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();
});

});





share|improve this answer





















  • 1





    could you please post the code here because maybe some day it will be removed but here it will be stay in the save place

    – Mohammad Alabed
    Dec 31 '14 at 9:13











  • Yes of course!You are right!

    – Anahit Ghazaryan
    Jan 4 '15 at 16:06











  • it works... but jesus christ. we have to do all that just to style options? there must be a better way

    – ahnbizcad
    Jan 28 '16 at 22:05











  • It is very dynamic way of doing what you want with the select, if you will have a better option i will be happy to see it as an answer here @ahnbizcad

    – Anahit DEV
    Feb 1 '16 at 5:51






  • 7





    This is NOT a native html <select> it just re-renders one with some jQuery code. If your gonna do this might as well use a jQuery plugin, React component etc. that handles keyboard UP/DOWN, typeahead/searching etc.

    – John Culviner
    Sep 9 '16 at 22:21





















7














EDIT: I found this awesome library that replaces the standard "select" element in HTML with awesomely styled "select" elements: Select2 - https://select2.github.io/examples.html





In 2011 you may have not been able to style the select "option" element, but it's 2015! You can totally style it! I don't understand some of the answers from 2014 saying you can't style it! CSS3 works wonders. I tried this in my own code, and the pull down "options" were styled just like how you would style the "select"



http://cssdeck.com/labs/styling-select-box-with-css3



Here's some example code!



select {
padding:3px;
margin: 0;
-webkit-border-radius:4px;
-moz-border-radius:4px;
border-radius:4px;
-webkit-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
-moz-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
background: black;
color:#888;
border:none;
outline:none;
display: inline-block;
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
cursor:pointer;
}





share|improve this answer





















  • 15





    Because the question is about styling the option element, not the select element.

    – Jsalinas
    Feb 25 '15 at 21:37






  • 3





    This answer is misleading, because while you explicitly show that you can style the select, you claim that the option is what can be styled, even though it's an OS element that only accepts minimal CSS styling at all.

    – Andrew Gray
    Jun 22 '15 at 19:42






  • 4





    update: it's 2016 and it's still a pain

    – David
    Jul 5 '16 at 20:54






  • 4





    ~~It's 2018 and is still a pain!~~ uh.. well, I'll edit this in 2018.

    – Thomas Praxl
    Jun 7 '17 at 20:41






  • 8





    it's 2018, legit, and it's still a pain

    – joshuaaron
    Jan 15 '18 at 22:05



















6














Seems like I can just set the CSS for the select in Chrome directly. CSS and HTML code provided below :






.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




share|improve this answer





















  • 5





    didn't work for me...

    – Muhamed Al Khalil
    Jan 23 '18 at 19:08






  • 1





    @Muhamed Al Khalil: I updated the example to be more clear, since the currently selected option has its own style, too. If that doesn't work, I suspect browser compatibility issues, then. =

    – HoldOffHunger
    Jan 23 '18 at 19:48






  • 2





    this did not work on my Firefox

    – Akash
    Jul 4 '18 at 11:15






  • 2





    @Akash: Interesting, this worked on Firefox before they released Firefox Quantum, and it still currently works on Chrome (60%+ of users). I bet it's a bug!

    – HoldOffHunger
    Jul 4 '18 at 13:07











  • doesn't work for me on Chrome on Mac.

    – virmaior
    Sep 18 '18 at 2:54



















3














As already mentioned, the only way is to use a plugin that replaces <select> functionality.



A list of jQuery plugins: http://plugins.jquery.com/tag/select/



Take a look at the example using Select2 plugin: http://jsfiddle.net/swsLokfj/23/






share|improve this answer


























  • In current jQuery Select2 4.x, the way to do this is now different. See: example, docs.

    – tanius
    Jan 25 at 21:08



















3














Bootstrap allows you to use styling via data-content:



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


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






share|improve this answer



















  • 3





    HTML embedded in data attributes makes me feel really icky.

    – Beejamin
    Jun 5 '17 at 13:47



















2














Leaving here a quick alternative, using class toggle on a table. The behavior is very similar than a select, but can be styled with transition, filters and colors, each children individually.






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>








share|improve this answer

































    1














    This element is rendered by the OS, not HTML. It cannot be styled via 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>





    try this it may help you



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





    share|improve this answer































      0














      Some properties can be styled for<option> tag:




      • font-family

      • color

      • font-*

      • background-color


      Also you can use custom font for individual <option> tag, for example any google font, Material Icons or other icon fonts from icomoon or alike. (That may come handy for font selectors etc.)



      Considering that, you can create font-family stack and insert icons in <option> tags, eg.



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


      where is taken from Icons and the rest is from Roboto.



      Note though that custom fonts do not work for mobile select.






      share|improve this answer


























      • <option style="color: 'red';"> doesn't works for me... suggestion?

        – fabio
        Jan 6 '17 at 11:21






      • 1





        Remove quotes over red: <option style="color: red;">

        – dy_
        Jan 7 '17 at 17:26











      • This straight up does not work, period.

        – frabjous
        Feb 2 '18 at 20:56



















      0














      It's 2017 and it IS possible to target specific select options. In my project I have a table with a class="variations", and the select options are in the table cell td="value", and the select has an ID select#pa_color.
      The option element also has a class option="attached" (among other class tags).
      If a user is logged in as a wholesale customer, they can see all of the color options. But retail customers are not allowed to purchase 2 color options, so I've disabled them



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


      It took a little logic, but here is how I targeted the disabled select options.



      CSS



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


      With that, my color options are only visible to wholesale customers.






      share|improve this answer

































        0














        You can use inline styles to add custome styling to <option> tags.



        For eg : <option style="font-weight:bold;color:#09C;">Option 1</option>
        This will apply the styles to this particular <option> element only.



        Then you can use a bit of javascript magic to apply the inline styles to all of the <option> elements within a <select> tag like so :



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



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



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



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



        You can also use <option value="" disabled> <br> </option> to add a line-break between the options.






        share|improve this answer































          0














          It's 100% work, basically the select option is rendered by os not by html. That's by the CSS style doesn't effect,.. generally option{font-size : value ; background-color:color code; border-radius:value; } this case work, but we can't customize the padding ,margin etc..
          Below code 100% work to customize select tag






          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>








          share|improve this answer


























          • From Review: Hi, please don't answer just with source code. Try to provide a nice description about how your solution works. See: How do I write a good answer?. Thanks

            – sɐunıɔןɐqɐp
            Oct 20 '18 at 7:52



















          0














          You can add a class and gives font-weight:700; in option. But by using this all the text will become bold.






          share|improve this answer































            -1














            Actually you can add :before and :after and style those. At least it's something






            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;
            }








            share|improve this answer































              -3














              Like stated above, not really possible; however, if you just want to style the initial state for something like a 'Select Product...' option before a user interacts with the field, you could do something like below --



              The below example styles (technically all) the first option red and once a user interacts will remove that option (which has the value="defaultValue" set) and remove the class applied to the select. You can apply other options besides color as well, but they will only affect the field once changed, not the list view.



              CSS



              .default-value{
              color: red;
              }


              jQuery



              $("select").addClass('default-value');

              $("select").bind("focus", function () {
              $(this).children('option[value="defaultValue"]').remove();
              $(this).removeClass('default-value');
              });





              share|improve this answer

























                Your Answer






                StackExchange.ifUsing("editor", function () {
                StackExchange.using("externalEditor", function () {
                StackExchange.using("snippets", function () {
                StackExchange.snippets.init();
                });
                });
                }, "code-snippets");

                StackExchange.ready(function() {
                var channelOptions = {
                tags: "".split(" "),
                id: "1"
                };
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function() {
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled) {
                StackExchange.using("snippets", function() {
                createEditor();
                });
                }
                else {
                createEditor();
                }
                });

                function createEditor() {
                StackExchange.prepareEditor({
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: true,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: 10,
                bindNavPrevention: true,
                postfix: "",
                imageUploader: {
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                },
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                });


                }
                });














                draft saved

                draft discarded


















                StackExchange.ready(
                function () {
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f7208786%2fhow-to-style-the-option-of-a-html-select%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                17 Answers
                17






                active

                oldest

                votes








                17 Answers
                17






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                138














                In general, you can't. This element is and example of a "replaced element", these are OS-dependent and are not part of the HTML/browser. It cannot be styled via CSS.



                There are replacement plug-ins/libraries that look like a <select> but are actually composed of regular HTML elements that CAN be styled.






                share|improve this answer





















                • 35





                  replacement plug-ins like???

                  – MrClan
                  Aug 26 '11 at 18:07






                • 2





                  This behaviour varies across different browsers and different OSes; it's worth clarifying if you're talking mainly about IE on Windows.

                  – Vince Bowdren
                  Apr 19 '13 at 9:10






                • 4





                  You can style select > option, but there are no reliable crossbrowser solution for doing so and, on chrome at least you can at most customize font size, family, background and foreground color. Maybe some more tweaks, but things as padding, hover color and such I couldn't succeed on changing. Indeed there might be alternatives, but depending on the project the <select> tag might be necessary for example for angular validation or some other reason.

                  – Felype
                  Jul 6 '15 at 14:49






                • 25





                  Is it possible in 2016 to style it???

                  – eugen sunic
                  Dec 24 '15 at 14:09






                • 3





                  @none I have posted an answer to Styling option tags. It does not show how to style <option>, but it does show how to emulate <select> so you can style the options.

                  – UndoingTech
                  Apr 5 '16 at 18:55
















                138














                In general, you can't. This element is and example of a "replaced element", these are OS-dependent and are not part of the HTML/browser. It cannot be styled via CSS.



                There are replacement plug-ins/libraries that look like a <select> but are actually composed of regular HTML elements that CAN be styled.






                share|improve this answer





















                • 35





                  replacement plug-ins like???

                  – MrClan
                  Aug 26 '11 at 18:07






                • 2





                  This behaviour varies across different browsers and different OSes; it's worth clarifying if you're talking mainly about IE on Windows.

                  – Vince Bowdren
                  Apr 19 '13 at 9:10






                • 4





                  You can style select > option, but there are no reliable crossbrowser solution for doing so and, on chrome at least you can at most customize font size, family, background and foreground color. Maybe some more tweaks, but things as padding, hover color and such I couldn't succeed on changing. Indeed there might be alternatives, but depending on the project the <select> tag might be necessary for example for angular validation or some other reason.

                  – Felype
                  Jul 6 '15 at 14:49






                • 25





                  Is it possible in 2016 to style it???

                  – eugen sunic
                  Dec 24 '15 at 14:09






                • 3





                  @none I have posted an answer to Styling option tags. It does not show how to style <option>, but it does show how to emulate <select> so you can style the options.

                  – UndoingTech
                  Apr 5 '16 at 18:55














                138












                138








                138







                In general, you can't. This element is and example of a "replaced element", these are OS-dependent and are not part of the HTML/browser. It cannot be styled via CSS.



                There are replacement plug-ins/libraries that look like a <select> but are actually composed of regular HTML elements that CAN be styled.






                share|improve this answer















                In general, you can't. This element is and example of a "replaced element", these are OS-dependent and are not part of the HTML/browser. It cannot be styled via CSS.



                There are replacement plug-ins/libraries that look like a <select> but are actually composed of regular HTML elements that CAN be styled.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Feb 1 at 20:49

























                answered Aug 26 '11 at 18:04









                Diodeus - James MacFarlaneDiodeus - James MacFarlane

                95.4k28139166




                95.4k28139166








                • 35





                  replacement plug-ins like???

                  – MrClan
                  Aug 26 '11 at 18:07






                • 2





                  This behaviour varies across different browsers and different OSes; it's worth clarifying if you're talking mainly about IE on Windows.

                  – Vince Bowdren
                  Apr 19 '13 at 9:10






                • 4





                  You can style select > option, but there are no reliable crossbrowser solution for doing so and, on chrome at least you can at most customize font size, family, background and foreground color. Maybe some more tweaks, but things as padding, hover color and such I couldn't succeed on changing. Indeed there might be alternatives, but depending on the project the <select> tag might be necessary for example for angular validation or some other reason.

                  – Felype
                  Jul 6 '15 at 14:49






                • 25





                  Is it possible in 2016 to style it???

                  – eugen sunic
                  Dec 24 '15 at 14:09






                • 3





                  @none I have posted an answer to Styling option tags. It does not show how to style <option>, but it does show how to emulate <select> so you can style the options.

                  – UndoingTech
                  Apr 5 '16 at 18:55














                • 35





                  replacement plug-ins like???

                  – MrClan
                  Aug 26 '11 at 18:07






                • 2





                  This behaviour varies across different browsers and different OSes; it's worth clarifying if you're talking mainly about IE on Windows.

                  – Vince Bowdren
                  Apr 19 '13 at 9:10






                • 4





                  You can style select > option, but there are no reliable crossbrowser solution for doing so and, on chrome at least you can at most customize font size, family, background and foreground color. Maybe some more tweaks, but things as padding, hover color and such I couldn't succeed on changing. Indeed there might be alternatives, but depending on the project the <select> tag might be necessary for example for angular validation or some other reason.

                  – Felype
                  Jul 6 '15 at 14:49






                • 25





                  Is it possible in 2016 to style it???

                  – eugen sunic
                  Dec 24 '15 at 14:09






                • 3





                  @none I have posted an answer to Styling option tags. It does not show how to style <option>, but it does show how to emulate <select> so you can style the options.

                  – UndoingTech
                  Apr 5 '16 at 18:55








                35




                35





                replacement plug-ins like???

                – MrClan
                Aug 26 '11 at 18:07





                replacement plug-ins like???

                – MrClan
                Aug 26 '11 at 18:07




                2




                2





                This behaviour varies across different browsers and different OSes; it's worth clarifying if you're talking mainly about IE on Windows.

                – Vince Bowdren
                Apr 19 '13 at 9:10





                This behaviour varies across different browsers and different OSes; it's worth clarifying if you're talking mainly about IE on Windows.

                – Vince Bowdren
                Apr 19 '13 at 9:10




                4




                4





                You can style select > option, but there are no reliable crossbrowser solution for doing so and, on chrome at least you can at most customize font size, family, background and foreground color. Maybe some more tweaks, but things as padding, hover color and such I couldn't succeed on changing. Indeed there might be alternatives, but depending on the project the <select> tag might be necessary for example for angular validation or some other reason.

                – Felype
                Jul 6 '15 at 14:49





                You can style select > option, but there are no reliable crossbrowser solution for doing so and, on chrome at least you can at most customize font size, family, background and foreground color. Maybe some more tweaks, but things as padding, hover color and such I couldn't succeed on changing. Indeed there might be alternatives, but depending on the project the <select> tag might be necessary for example for angular validation or some other reason.

                – Felype
                Jul 6 '15 at 14:49




                25




                25





                Is it possible in 2016 to style it???

                – eugen sunic
                Dec 24 '15 at 14:09





                Is it possible in 2016 to style it???

                – eugen sunic
                Dec 24 '15 at 14:09




                3




                3





                @none I have posted an answer to Styling option tags. It does not show how to style <option>, but it does show how to emulate <select> so you can style the options.

                – UndoingTech
                Apr 5 '16 at 18:55





                @none I have posted an answer to Styling option tags. It does not show how to style <option>, but it does show how to emulate <select> so you can style the options.

                – UndoingTech
                Apr 5 '16 at 18:55













                49














                No, it's not possible, as the styling for these elements is handled by the user's OS. MSDN will answer your question here:




                Except for background-color and color, style settings applied through the style object for the option element are ignored.







                share|improve this answer


























                • so the conclusion is : "a select's option cannot be partially styled just with CSS", right??? :(

                  – MrClan
                  Aug 29 '11 at 7:19






                • 17





                  The important point here is that they can be styled, only very minimally.

                  – devios1
                  Jan 2 '13 at 19:07






                • 1





                  To add to devios's point -- the native select can be minimally styled for Windows, but not necessarily for other OSes. As pumbo mentions below, you'll need to swap out the select for other elements (usually an ul) and duplicate select functionality in JavaScript for full control over styles.

                  – Benjamin Robinson
                  Jul 14 '16 at 17:37






                • 2





                  <option style="color: 'red';"> doesn't works for me... suggestion?

                  – fabio
                  Jan 6 '17 at 11:22






                • 2





                  @fabio remove ' ' from red...

                  – b.doe
                  Mar 30 '17 at 7:26
















                49














                No, it's not possible, as the styling for these elements is handled by the user's OS. MSDN will answer your question here:




                Except for background-color and color, style settings applied through the style object for the option element are ignored.







                share|improve this answer


























                • so the conclusion is : "a select's option cannot be partially styled just with CSS", right??? :(

                  – MrClan
                  Aug 29 '11 at 7:19






                • 17





                  The important point here is that they can be styled, only very minimally.

                  – devios1
                  Jan 2 '13 at 19:07






                • 1





                  To add to devios's point -- the native select can be minimally styled for Windows, but not necessarily for other OSes. As pumbo mentions below, you'll need to swap out the select for other elements (usually an ul) and duplicate select functionality in JavaScript for full control over styles.

                  – Benjamin Robinson
                  Jul 14 '16 at 17:37






                • 2





                  <option style="color: 'red';"> doesn't works for me... suggestion?

                  – fabio
                  Jan 6 '17 at 11:22






                • 2





                  @fabio remove ' ' from red...

                  – b.doe
                  Mar 30 '17 at 7:26














                49












                49








                49







                No, it's not possible, as the styling for these elements is handled by the user's OS. MSDN will answer your question here:




                Except for background-color and color, style settings applied through the style object for the option element are ignored.







                share|improve this answer















                No, it's not possible, as the styling for these elements is handled by the user's OS. MSDN will answer your question here:




                Except for background-color and color, style settings applied through the style object for the option element are ignored.








                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Jul 1 '15 at 14:19









                j08691

                167k20197215




                167k20197215










                answered Aug 26 '11 at 18:05









                esqewesqew

                21.8k2077110




                21.8k2077110













                • so the conclusion is : "a select's option cannot be partially styled just with CSS", right??? :(

                  – MrClan
                  Aug 29 '11 at 7:19






                • 17





                  The important point here is that they can be styled, only very minimally.

                  – devios1
                  Jan 2 '13 at 19:07






                • 1





                  To add to devios's point -- the native select can be minimally styled for Windows, but not necessarily for other OSes. As pumbo mentions below, you'll need to swap out the select for other elements (usually an ul) and duplicate select functionality in JavaScript for full control over styles.

                  – Benjamin Robinson
                  Jul 14 '16 at 17:37






                • 2





                  <option style="color: 'red';"> doesn't works for me... suggestion?

                  – fabio
                  Jan 6 '17 at 11:22






                • 2





                  @fabio remove ' ' from red...

                  – b.doe
                  Mar 30 '17 at 7:26



















                • so the conclusion is : "a select's option cannot be partially styled just with CSS", right??? :(

                  – MrClan
                  Aug 29 '11 at 7:19






                • 17





                  The important point here is that they can be styled, only very minimally.

                  – devios1
                  Jan 2 '13 at 19:07






                • 1





                  To add to devios's point -- the native select can be minimally styled for Windows, but not necessarily for other OSes. As pumbo mentions below, you'll need to swap out the select for other elements (usually an ul) and duplicate select functionality in JavaScript for full control over styles.

                  – Benjamin Robinson
                  Jul 14 '16 at 17:37






                • 2





                  <option style="color: 'red';"> doesn't works for me... suggestion?

                  – fabio
                  Jan 6 '17 at 11:22






                • 2





                  @fabio remove ' ' from red...

                  – b.doe
                  Mar 30 '17 at 7:26

















                so the conclusion is : "a select's option cannot be partially styled just with CSS", right??? :(

                – MrClan
                Aug 29 '11 at 7:19





                so the conclusion is : "a select's option cannot be partially styled just with CSS", right??? :(

                – MrClan
                Aug 29 '11 at 7:19




                17




                17





                The important point here is that they can be styled, only very minimally.

                – devios1
                Jan 2 '13 at 19:07





                The important point here is that they can be styled, only very minimally.

                – devios1
                Jan 2 '13 at 19:07




                1




                1





                To add to devios's point -- the native select can be minimally styled for Windows, but not necessarily for other OSes. As pumbo mentions below, you'll need to swap out the select for other elements (usually an ul) and duplicate select functionality in JavaScript for full control over styles.

                – Benjamin Robinson
                Jul 14 '16 at 17:37





                To add to devios's point -- the native select can be minimally styled for Windows, but not necessarily for other OSes. As pumbo mentions below, you'll need to swap out the select for other elements (usually an ul) and duplicate select functionality in JavaScript for full control over styles.

                – Benjamin Robinson
                Jul 14 '16 at 17:37




                2




                2





                <option style="color: 'red';"> doesn't works for me... suggestion?

                – fabio
                Jan 6 '17 at 11:22





                <option style="color: 'red';"> doesn't works for me... suggestion?

                – fabio
                Jan 6 '17 at 11:22




                2




                2





                @fabio remove ' ' from red...

                – b.doe
                Mar 30 '17 at 7:26





                @fabio remove ' ' from red...

                – b.doe
                Mar 30 '17 at 7:26











                24














                You can style the option elements to some extent.



                Using the * CSS tag you can style the options inside the box that is drawn by the system.



                Example:



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


                That will look like this:



                enter image description here






                share|improve this answer


























                • That is true only because the all selector targets the shadow DOM innards, you can target those manually per browser.

                  – mystrdat
                  Aug 6 '14 at 12:51
















                24














                You can style the option elements to some extent.



                Using the * CSS tag you can style the options inside the box that is drawn by the system.



                Example:



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


                That will look like this:



                enter image description here






                share|improve this answer


























                • That is true only because the all selector targets the shadow DOM innards, you can target those manually per browser.

                  – mystrdat
                  Aug 6 '14 at 12:51














                24












                24








                24







                You can style the option elements to some extent.



                Using the * CSS tag you can style the options inside the box that is drawn by the system.



                Example:



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


                That will look like this:



                enter image description here






                share|improve this answer















                You can style the option elements to some extent.



                Using the * CSS tag you can style the options inside the box that is drawn by the system.



                Example:



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


                That will look like this:



                enter image description here







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Oct 7 '13 at 5:13









                jgb

                1,08451727




                1,08451727










                answered Oct 7 '13 at 4:46









                Zoron19Zoron19

                30537




                30537













                • That is true only because the all selector targets the shadow DOM innards, you can target those manually per browser.

                  – mystrdat
                  Aug 6 '14 at 12:51



















                • That is true only because the all selector targets the shadow DOM innards, you can target those manually per browser.

                  – mystrdat
                  Aug 6 '14 at 12:51

















                That is true only because the all selector targets the shadow DOM innards, you can target those manually per browser.

                – mystrdat
                Aug 6 '14 at 12:51





                That is true only because the all selector targets the shadow DOM innards, you can target those manually per browser.

                – mystrdat
                Aug 6 '14 at 12:51











                21














                I found and using this good example of styling the selects and options.You can do with this select all you want.Here is the 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();
                });

                });





                share|improve this answer





















                • 1





                  could you please post the code here because maybe some day it will be removed but here it will be stay in the save place

                  – Mohammad Alabed
                  Dec 31 '14 at 9:13











                • Yes of course!You are right!

                  – Anahit Ghazaryan
                  Jan 4 '15 at 16:06











                • it works... but jesus christ. we have to do all that just to style options? there must be a better way

                  – ahnbizcad
                  Jan 28 '16 at 22:05











                • It is very dynamic way of doing what you want with the select, if you will have a better option i will be happy to see it as an answer here @ahnbizcad

                  – Anahit DEV
                  Feb 1 '16 at 5:51






                • 7





                  This is NOT a native html <select> it just re-renders one with some jQuery code. If your gonna do this might as well use a jQuery plugin, React component etc. that handles keyboard UP/DOWN, typeahead/searching etc.

                  – John Culviner
                  Sep 9 '16 at 22:21


















                21














                I found and using this good example of styling the selects and options.You can do with this select all you want.Here is the 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();
                });

                });





                share|improve this answer





















                • 1





                  could you please post the code here because maybe some day it will be removed but here it will be stay in the save place

                  – Mohammad Alabed
                  Dec 31 '14 at 9:13











                • Yes of course!You are right!

                  – Anahit Ghazaryan
                  Jan 4 '15 at 16:06











                • it works... but jesus christ. we have to do all that just to style options? there must be a better way

                  – ahnbizcad
                  Jan 28 '16 at 22:05











                • It is very dynamic way of doing what you want with the select, if you will have a better option i will be happy to see it as an answer here @ahnbizcad

                  – Anahit DEV
                  Feb 1 '16 at 5:51






                • 7





                  This is NOT a native html <select> it just re-renders one with some jQuery code. If your gonna do this might as well use a jQuery plugin, React component etc. that handles keyboard UP/DOWN, typeahead/searching etc.

                  – John Culviner
                  Sep 9 '16 at 22:21
















                21












                21








                21







                I found and using this good example of styling the selects and options.You can do with this select all you want.Here is the 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();
                });

                });





                share|improve this answer















                I found and using this good example of styling the selects and options.You can do with this select all you want.Here is the 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();
                });

                });






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Feb 13 '15 at 6:53

























                answered Dec 16 '14 at 21:30









                Anahit GhazaryanAnahit Ghazaryan

                465420




                465420








                • 1





                  could you please post the code here because maybe some day it will be removed but here it will be stay in the save place

                  – Mohammad Alabed
                  Dec 31 '14 at 9:13











                • Yes of course!You are right!

                  – Anahit Ghazaryan
                  Jan 4 '15 at 16:06











                • it works... but jesus christ. we have to do all that just to style options? there must be a better way

                  – ahnbizcad
                  Jan 28 '16 at 22:05











                • It is very dynamic way of doing what you want with the select, if you will have a better option i will be happy to see it as an answer here @ahnbizcad

                  – Anahit DEV
                  Feb 1 '16 at 5:51






                • 7





                  This is NOT a native html <select> it just re-renders one with some jQuery code. If your gonna do this might as well use a jQuery plugin, React component etc. that handles keyboard UP/DOWN, typeahead/searching etc.

                  – John Culviner
                  Sep 9 '16 at 22:21
















                • 1





                  could you please post the code here because maybe some day it will be removed but here it will be stay in the save place

                  – Mohammad Alabed
                  Dec 31 '14 at 9:13











                • Yes of course!You are right!

                  – Anahit Ghazaryan
                  Jan 4 '15 at 16:06











                • it works... but jesus christ. we have to do all that just to style options? there must be a better way

                  – ahnbizcad
                  Jan 28 '16 at 22:05











                • It is very dynamic way of doing what you want with the select, if you will have a better option i will be happy to see it as an answer here @ahnbizcad

                  – Anahit DEV
                  Feb 1 '16 at 5:51






                • 7





                  This is NOT a native html <select> it just re-renders one with some jQuery code. If your gonna do this might as well use a jQuery plugin, React component etc. that handles keyboard UP/DOWN, typeahead/searching etc.

                  – John Culviner
                  Sep 9 '16 at 22:21










                1




                1





                could you please post the code here because maybe some day it will be removed but here it will be stay in the save place

                – Mohammad Alabed
                Dec 31 '14 at 9:13





                could you please post the code here because maybe some day it will be removed but here it will be stay in the save place

                – Mohammad Alabed
                Dec 31 '14 at 9:13













                Yes of course!You are right!

                – Anahit Ghazaryan
                Jan 4 '15 at 16:06





                Yes of course!You are right!

                – Anahit Ghazaryan
                Jan 4 '15 at 16:06













                it works... but jesus christ. we have to do all that just to style options? there must be a better way

                – ahnbizcad
                Jan 28 '16 at 22:05





                it works... but jesus christ. we have to do all that just to style options? there must be a better way

                – ahnbizcad
                Jan 28 '16 at 22:05













                It is very dynamic way of doing what you want with the select, if you will have a better option i will be happy to see it as an answer here @ahnbizcad

                – Anahit DEV
                Feb 1 '16 at 5:51





                It is very dynamic way of doing what you want with the select, if you will have a better option i will be happy to see it as an answer here @ahnbizcad

                – Anahit DEV
                Feb 1 '16 at 5:51




                7




                7





                This is NOT a native html <select> it just re-renders one with some jQuery code. If your gonna do this might as well use a jQuery plugin, React component etc. that handles keyboard UP/DOWN, typeahead/searching etc.

                – John Culviner
                Sep 9 '16 at 22:21







                This is NOT a native html <select> it just re-renders one with some jQuery code. If your gonna do this might as well use a jQuery plugin, React component etc. that handles keyboard UP/DOWN, typeahead/searching etc.

                – John Culviner
                Sep 9 '16 at 22:21













                7














                EDIT: I found this awesome library that replaces the standard "select" element in HTML with awesomely styled "select" elements: Select2 - https://select2.github.io/examples.html





                In 2011 you may have not been able to style the select "option" element, but it's 2015! You can totally style it! I don't understand some of the answers from 2014 saying you can't style it! CSS3 works wonders. I tried this in my own code, and the pull down "options" were styled just like how you would style the "select"



                http://cssdeck.com/labs/styling-select-box-with-css3



                Here's some example code!



                select {
                padding:3px;
                margin: 0;
                -webkit-border-radius:4px;
                -moz-border-radius:4px;
                border-radius:4px;
                -webkit-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                -moz-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                background: black;
                color:#888;
                border:none;
                outline:none;
                display: inline-block;
                -webkit-appearance:none;
                -moz-appearance:none;
                appearance:none;
                cursor:pointer;
                }





                share|improve this answer





















                • 15





                  Because the question is about styling the option element, not the select element.

                  – Jsalinas
                  Feb 25 '15 at 21:37






                • 3





                  This answer is misleading, because while you explicitly show that you can style the select, you claim that the option is what can be styled, even though it's an OS element that only accepts minimal CSS styling at all.

                  – Andrew Gray
                  Jun 22 '15 at 19:42






                • 4





                  update: it's 2016 and it's still a pain

                  – David
                  Jul 5 '16 at 20:54






                • 4





                  ~~It's 2018 and is still a pain!~~ uh.. well, I'll edit this in 2018.

                  – Thomas Praxl
                  Jun 7 '17 at 20:41






                • 8





                  it's 2018, legit, and it's still a pain

                  – joshuaaron
                  Jan 15 '18 at 22:05
















                7














                EDIT: I found this awesome library that replaces the standard "select" element in HTML with awesomely styled "select" elements: Select2 - https://select2.github.io/examples.html





                In 2011 you may have not been able to style the select "option" element, but it's 2015! You can totally style it! I don't understand some of the answers from 2014 saying you can't style it! CSS3 works wonders. I tried this in my own code, and the pull down "options" were styled just like how you would style the "select"



                http://cssdeck.com/labs/styling-select-box-with-css3



                Here's some example code!



                select {
                padding:3px;
                margin: 0;
                -webkit-border-radius:4px;
                -moz-border-radius:4px;
                border-radius:4px;
                -webkit-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                -moz-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                background: black;
                color:#888;
                border:none;
                outline:none;
                display: inline-block;
                -webkit-appearance:none;
                -moz-appearance:none;
                appearance:none;
                cursor:pointer;
                }





                share|improve this answer





















                • 15





                  Because the question is about styling the option element, not the select element.

                  – Jsalinas
                  Feb 25 '15 at 21:37






                • 3





                  This answer is misleading, because while you explicitly show that you can style the select, you claim that the option is what can be styled, even though it's an OS element that only accepts minimal CSS styling at all.

                  – Andrew Gray
                  Jun 22 '15 at 19:42






                • 4





                  update: it's 2016 and it's still a pain

                  – David
                  Jul 5 '16 at 20:54






                • 4





                  ~~It's 2018 and is still a pain!~~ uh.. well, I'll edit this in 2018.

                  – Thomas Praxl
                  Jun 7 '17 at 20:41






                • 8





                  it's 2018, legit, and it's still a pain

                  – joshuaaron
                  Jan 15 '18 at 22:05














                7












                7








                7







                EDIT: I found this awesome library that replaces the standard "select" element in HTML with awesomely styled "select" elements: Select2 - https://select2.github.io/examples.html





                In 2011 you may have not been able to style the select "option" element, but it's 2015! You can totally style it! I don't understand some of the answers from 2014 saying you can't style it! CSS3 works wonders. I tried this in my own code, and the pull down "options" were styled just like how you would style the "select"



                http://cssdeck.com/labs/styling-select-box-with-css3



                Here's some example code!



                select {
                padding:3px;
                margin: 0;
                -webkit-border-radius:4px;
                -moz-border-radius:4px;
                border-radius:4px;
                -webkit-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                -moz-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                background: black;
                color:#888;
                border:none;
                outline:none;
                display: inline-block;
                -webkit-appearance:none;
                -moz-appearance:none;
                appearance:none;
                cursor:pointer;
                }





                share|improve this answer















                EDIT: I found this awesome library that replaces the standard "select" element in HTML with awesomely styled "select" elements: Select2 - https://select2.github.io/examples.html





                In 2011 you may have not been able to style the select "option" element, but it's 2015! You can totally style it! I don't understand some of the answers from 2014 saying you can't style it! CSS3 works wonders. I tried this in my own code, and the pull down "options" were styled just like how you would style the "select"



                http://cssdeck.com/labs/styling-select-box-with-css3



                Here's some example code!



                select {
                padding:3px;
                margin: 0;
                -webkit-border-radius:4px;
                -moz-border-radius:4px;
                border-radius:4px;
                -webkit-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                -moz-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
                background: black;
                color:#888;
                border:none;
                outline:none;
                display: inline-block;
                -webkit-appearance:none;
                -moz-appearance:none;
                appearance:none;
                cursor:pointer;
                }






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Mar 3 '15 at 23:35

























                answered Feb 11 '15 at 23:55









                Katie SKatie S

                26.8k116584




                26.8k116584








                • 15





                  Because the question is about styling the option element, not the select element.

                  – Jsalinas
                  Feb 25 '15 at 21:37






                • 3





                  This answer is misleading, because while you explicitly show that you can style the select, you claim that the option is what can be styled, even though it's an OS element that only accepts minimal CSS styling at all.

                  – Andrew Gray
                  Jun 22 '15 at 19:42






                • 4





                  update: it's 2016 and it's still a pain

                  – David
                  Jul 5 '16 at 20:54






                • 4





                  ~~It's 2018 and is still a pain!~~ uh.. well, I'll edit this in 2018.

                  – Thomas Praxl
                  Jun 7 '17 at 20:41






                • 8





                  it's 2018, legit, and it's still a pain

                  – joshuaaron
                  Jan 15 '18 at 22:05














                • 15





                  Because the question is about styling the option element, not the select element.

                  – Jsalinas
                  Feb 25 '15 at 21:37






                • 3





                  This answer is misleading, because while you explicitly show that you can style the select, you claim that the option is what can be styled, even though it's an OS element that only accepts minimal CSS styling at all.

                  – Andrew Gray
                  Jun 22 '15 at 19:42






                • 4





                  update: it's 2016 and it's still a pain

                  – David
                  Jul 5 '16 at 20:54






                • 4





                  ~~It's 2018 and is still a pain!~~ uh.. well, I'll edit this in 2018.

                  – Thomas Praxl
                  Jun 7 '17 at 20:41






                • 8





                  it's 2018, legit, and it's still a pain

                  – joshuaaron
                  Jan 15 '18 at 22:05








                15




                15





                Because the question is about styling the option element, not the select element.

                – Jsalinas
                Feb 25 '15 at 21:37





                Because the question is about styling the option element, not the select element.

                – Jsalinas
                Feb 25 '15 at 21:37




                3




                3





                This answer is misleading, because while you explicitly show that you can style the select, you claim that the option is what can be styled, even though it's an OS element that only accepts minimal CSS styling at all.

                – Andrew Gray
                Jun 22 '15 at 19:42





                This answer is misleading, because while you explicitly show that you can style the select, you claim that the option is what can be styled, even though it's an OS element that only accepts minimal CSS styling at all.

                – Andrew Gray
                Jun 22 '15 at 19:42




                4




                4





                update: it's 2016 and it's still a pain

                – David
                Jul 5 '16 at 20:54





                update: it's 2016 and it's still a pain

                – David
                Jul 5 '16 at 20:54




                4




                4





                ~~It's 2018 and is still a pain!~~ uh.. well, I'll edit this in 2018.

                – Thomas Praxl
                Jun 7 '17 at 20:41





                ~~It's 2018 and is still a pain!~~ uh.. well, I'll edit this in 2018.

                – Thomas Praxl
                Jun 7 '17 at 20:41




                8




                8





                it's 2018, legit, and it's still a pain

                – joshuaaron
                Jan 15 '18 at 22:05





                it's 2018, legit, and it's still a pain

                – joshuaaron
                Jan 15 '18 at 22:05











                6














                Seems like I can just set the CSS for the select in Chrome directly. CSS and HTML code provided below :






                .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




                share|improve this answer





















                • 5





                  didn't work for me...

                  – Muhamed Al Khalil
                  Jan 23 '18 at 19:08






                • 1





                  @Muhamed Al Khalil: I updated the example to be more clear, since the currently selected option has its own style, too. If that doesn't work, I suspect browser compatibility issues, then. =

                  – HoldOffHunger
                  Jan 23 '18 at 19:48






                • 2





                  this did not work on my Firefox

                  – Akash
                  Jul 4 '18 at 11:15






                • 2





                  @Akash: Interesting, this worked on Firefox before they released Firefox Quantum, and it still currently works on Chrome (60%+ of users). I bet it's a bug!

                  – HoldOffHunger
                  Jul 4 '18 at 13:07











                • doesn't work for me on Chrome on Mac.

                  – virmaior
                  Sep 18 '18 at 2:54
















                6














                Seems like I can just set the CSS for the select in Chrome directly. CSS and HTML code provided below :






                .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




                share|improve this answer





















                • 5





                  didn't work for me...

                  – Muhamed Al Khalil
                  Jan 23 '18 at 19:08






                • 1





                  @Muhamed Al Khalil: I updated the example to be more clear, since the currently selected option has its own style, too. If that doesn't work, I suspect browser compatibility issues, then. =

                  – HoldOffHunger
                  Jan 23 '18 at 19:48






                • 2





                  this did not work on my Firefox

                  – Akash
                  Jul 4 '18 at 11:15






                • 2





                  @Akash: Interesting, this worked on Firefox before they released Firefox Quantum, and it still currently works on Chrome (60%+ of users). I bet it's a bug!

                  – HoldOffHunger
                  Jul 4 '18 at 13:07











                • doesn't work for me on Chrome on Mac.

                  – virmaior
                  Sep 18 '18 at 2:54














                6












                6








                6







                Seems like I can just set the CSS for the select in Chrome directly. CSS and HTML code provided below :






                .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




                share|improve this answer















                Seems like I can just set the CSS for the select in Chrome directly. CSS and HTML code provided below :






                .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




                .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>





                .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>






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Sep 18 '18 at 3:29

























                answered Apr 28 '16 at 12:24









                HoldOffHungerHoldOffHunger

                4,08922349




                4,08922349








                • 5





                  didn't work for me...

                  – Muhamed Al Khalil
                  Jan 23 '18 at 19:08






                • 1





                  @Muhamed Al Khalil: I updated the example to be more clear, since the currently selected option has its own style, too. If that doesn't work, I suspect browser compatibility issues, then. =

                  – HoldOffHunger
                  Jan 23 '18 at 19:48






                • 2





                  this did not work on my Firefox

                  – Akash
                  Jul 4 '18 at 11:15






                • 2





                  @Akash: Interesting, this worked on Firefox before they released Firefox Quantum, and it still currently works on Chrome (60%+ of users). I bet it's a bug!

                  – HoldOffHunger
                  Jul 4 '18 at 13:07











                • doesn't work for me on Chrome on Mac.

                  – virmaior
                  Sep 18 '18 at 2:54














                • 5





                  didn't work for me...

                  – Muhamed Al Khalil
                  Jan 23 '18 at 19:08






                • 1





                  @Muhamed Al Khalil: I updated the example to be more clear, since the currently selected option has its own style, too. If that doesn't work, I suspect browser compatibility issues, then. =

                  – HoldOffHunger
                  Jan 23 '18 at 19:48






                • 2





                  this did not work on my Firefox

                  – Akash
                  Jul 4 '18 at 11:15






                • 2





                  @Akash: Interesting, this worked on Firefox before they released Firefox Quantum, and it still currently works on Chrome (60%+ of users). I bet it's a bug!

                  – HoldOffHunger
                  Jul 4 '18 at 13:07











                • doesn't work for me on Chrome on Mac.

                  – virmaior
                  Sep 18 '18 at 2:54








                5




                5





                didn't work for me...

                – Muhamed Al Khalil
                Jan 23 '18 at 19:08





                didn't work for me...

                – Muhamed Al Khalil
                Jan 23 '18 at 19:08




                1




                1





                @Muhamed Al Khalil: I updated the example to be more clear, since the currently selected option has its own style, too. If that doesn't work, I suspect browser compatibility issues, then. =

                – HoldOffHunger
                Jan 23 '18 at 19:48





                @Muhamed Al Khalil: I updated the example to be more clear, since the currently selected option has its own style, too. If that doesn't work, I suspect browser compatibility issues, then. =

                – HoldOffHunger
                Jan 23 '18 at 19:48




                2




                2





                this did not work on my Firefox

                – Akash
                Jul 4 '18 at 11:15





                this did not work on my Firefox

                – Akash
                Jul 4 '18 at 11:15




                2




                2





                @Akash: Interesting, this worked on Firefox before they released Firefox Quantum, and it still currently works on Chrome (60%+ of users). I bet it's a bug!

                – HoldOffHunger
                Jul 4 '18 at 13:07





                @Akash: Interesting, this worked on Firefox before they released Firefox Quantum, and it still currently works on Chrome (60%+ of users). I bet it's a bug!

                – HoldOffHunger
                Jul 4 '18 at 13:07













                doesn't work for me on Chrome on Mac.

                – virmaior
                Sep 18 '18 at 2:54





                doesn't work for me on Chrome on Mac.

                – virmaior
                Sep 18 '18 at 2:54











                3














                As already mentioned, the only way is to use a plugin that replaces <select> functionality.



                A list of jQuery plugins: http://plugins.jquery.com/tag/select/



                Take a look at the example using Select2 plugin: http://jsfiddle.net/swsLokfj/23/






                share|improve this answer


























                • In current jQuery Select2 4.x, the way to do this is now different. See: example, docs.

                  – tanius
                  Jan 25 at 21:08
















                3














                As already mentioned, the only way is to use a plugin that replaces <select> functionality.



                A list of jQuery plugins: http://plugins.jquery.com/tag/select/



                Take a look at the example using Select2 plugin: http://jsfiddle.net/swsLokfj/23/






                share|improve this answer


























                • In current jQuery Select2 4.x, the way to do this is now different. See: example, docs.

                  – tanius
                  Jan 25 at 21:08














                3












                3








                3







                As already mentioned, the only way is to use a plugin that replaces <select> functionality.



                A list of jQuery plugins: http://plugins.jquery.com/tag/select/



                Take a look at the example using Select2 plugin: http://jsfiddle.net/swsLokfj/23/






                share|improve this answer















                As already mentioned, the only way is to use a plugin that replaces <select> functionality.



                A list of jQuery plugins: http://plugins.jquery.com/tag/select/



                Take a look at the example using Select2 plugin: http://jsfiddle.net/swsLokfj/23/







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited May 22 '15 at 4:00

























                answered Jan 13 '15 at 11:18









                AlexMAlexM

                2,11611216




                2,11611216













                • In current jQuery Select2 4.x, the way to do this is now different. See: example, docs.

                  – tanius
                  Jan 25 at 21:08



















                • In current jQuery Select2 4.x, the way to do this is now different. See: example, docs.

                  – tanius
                  Jan 25 at 21:08

















                In current jQuery Select2 4.x, the way to do this is now different. See: example, docs.

                – tanius
                Jan 25 at 21:08





                In current jQuery Select2 4.x, the way to do this is now different. See: example, docs.

                – tanius
                Jan 25 at 21:08











                3














                Bootstrap allows you to use styling via data-content:



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


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






                share|improve this answer



















                • 3





                  HTML embedded in data attributes makes me feel really icky.

                  – Beejamin
                  Jun 5 '17 at 13:47
















                3














                Bootstrap allows you to use styling via data-content:



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


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






                share|improve this answer



















                • 3





                  HTML embedded in data attributes makes me feel really icky.

                  – Beejamin
                  Jun 5 '17 at 13:47














                3












                3








                3







                Bootstrap allows you to use styling via data-content:



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


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






                share|improve this answer













                Bootstrap allows you to use styling via data-content:



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


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







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 17 '16 at 17:29









                BhetzieBhetzie

                1,41562335




                1,41562335








                • 3





                  HTML embedded in data attributes makes me feel really icky.

                  – Beejamin
                  Jun 5 '17 at 13:47














                • 3





                  HTML embedded in data attributes makes me feel really icky.

                  – Beejamin
                  Jun 5 '17 at 13:47








                3




                3





                HTML embedded in data attributes makes me feel really icky.

                – Beejamin
                Jun 5 '17 at 13:47





                HTML embedded in data attributes makes me feel really icky.

                – Beejamin
                Jun 5 '17 at 13:47











                2














                Leaving here a quick alternative, using class toggle on a table. The behavior is very similar than a select, but can be styled with transition, filters and colors, each children individually.






                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>








                share|improve this answer






























                  2














                  Leaving here a quick alternative, using class toggle on a table. The behavior is very similar than a select, but can be styled with transition, filters and colors, each children individually.






                  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>








                  share|improve this answer




























                    2












                    2








                    2







                    Leaving here a quick alternative, using class toggle on a table. The behavior is very similar than a select, but can be styled with transition, filters and colors, each children individually.






                    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>








                    share|improve this answer















                    Leaving here a quick alternative, using class toggle on a table. The behavior is very similar than a select, but can be styled with transition, filters and colors, each children individually.






                    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>








                    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>





                    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>






                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited May 16 '18 at 8:26

























                    answered May 16 '18 at 4:18









                    CryptopatCryptopat

                    1,78511823




                    1,78511823























                        1














                        This element is rendered by the OS, not HTML. It cannot be styled via 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>





                        try this it may help you



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





                        share|improve this answer




























                          1














                          This element is rendered by the OS, not HTML. It cannot be styled via 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>





                          try this it may help you



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





                          share|improve this answer


























                            1












                            1








                            1







                            This element is rendered by the OS, not HTML. It cannot be styled via 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>





                            try this it may help you



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





                            share|improve this answer













                            This element is rendered by the OS, not HTML. It cannot be styled via 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>





                            try this it may help you



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





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





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






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Sep 27 '18 at 15:12









                            Venkat GVenkat G

                            414




                            414























                                0














                                Some properties can be styled for<option> tag:




                                • font-family

                                • color

                                • font-*

                                • background-color


                                Also you can use custom font for individual <option> tag, for example any google font, Material Icons or other icon fonts from icomoon or alike. (That may come handy for font selectors etc.)



                                Considering that, you can create font-family stack and insert icons in <option> tags, eg.



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


                                where is taken from Icons and the rest is from Roboto.



                                Note though that custom fonts do not work for mobile select.






                                share|improve this answer


























                                • <option style="color: 'red';"> doesn't works for me... suggestion?

                                  – fabio
                                  Jan 6 '17 at 11:21






                                • 1





                                  Remove quotes over red: <option style="color: red;">

                                  – dy_
                                  Jan 7 '17 at 17:26











                                • This straight up does not work, period.

                                  – frabjous
                                  Feb 2 '18 at 20:56
















                                0














                                Some properties can be styled for<option> tag:




                                • font-family

                                • color

                                • font-*

                                • background-color


                                Also you can use custom font for individual <option> tag, for example any google font, Material Icons or other icon fonts from icomoon or alike. (That may come handy for font selectors etc.)



                                Considering that, you can create font-family stack and insert icons in <option> tags, eg.



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


                                where is taken from Icons and the rest is from Roboto.



                                Note though that custom fonts do not work for mobile select.






                                share|improve this answer


























                                • <option style="color: 'red';"> doesn't works for me... suggestion?

                                  – fabio
                                  Jan 6 '17 at 11:21






                                • 1





                                  Remove quotes over red: <option style="color: red;">

                                  – dy_
                                  Jan 7 '17 at 17:26











                                • This straight up does not work, period.

                                  – frabjous
                                  Feb 2 '18 at 20:56














                                0












                                0








                                0







                                Some properties can be styled for<option> tag:




                                • font-family

                                • color

                                • font-*

                                • background-color


                                Also you can use custom font for individual <option> tag, for example any google font, Material Icons or other icon fonts from icomoon or alike. (That may come handy for font selectors etc.)



                                Considering that, you can create font-family stack and insert icons in <option> tags, eg.



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


                                where is taken from Icons and the rest is from Roboto.



                                Note though that custom fonts do not work for mobile select.






                                share|improve this answer















                                Some properties can be styled for<option> tag:




                                • font-family

                                • color

                                • font-*

                                • background-color


                                Also you can use custom font for individual <option> tag, for example any google font, Material Icons or other icon fonts from icomoon or alike. (That may come handy for font selectors etc.)



                                Considering that, you can create font-family stack and insert icons in <option> tags, eg.



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


                                where is taken from Icons and the rest is from Roboto.



                                Note though that custom fonts do not work for mobile select.







                                share|improve this answer














                                share|improve this answer



                                share|improve this answer








                                edited Aug 16 '16 at 0:10

























                                answered Aug 15 '16 at 21:15









                                dy_dy_

                                2,15721724




                                2,15721724













                                • <option style="color: 'red';"> doesn't works for me... suggestion?

                                  – fabio
                                  Jan 6 '17 at 11:21






                                • 1





                                  Remove quotes over red: <option style="color: red;">

                                  – dy_
                                  Jan 7 '17 at 17:26











                                • This straight up does not work, period.

                                  – frabjous
                                  Feb 2 '18 at 20:56



















                                • <option style="color: 'red';"> doesn't works for me... suggestion?

                                  – fabio
                                  Jan 6 '17 at 11:21






                                • 1





                                  Remove quotes over red: <option style="color: red;">

                                  – dy_
                                  Jan 7 '17 at 17:26











                                • This straight up does not work, period.

                                  – frabjous
                                  Feb 2 '18 at 20:56

















                                <option style="color: 'red';"> doesn't works for me... suggestion?

                                – fabio
                                Jan 6 '17 at 11:21





                                <option style="color: 'red';"> doesn't works for me... suggestion?

                                – fabio
                                Jan 6 '17 at 11:21




                                1




                                1





                                Remove quotes over red: <option style="color: red;">

                                – dy_
                                Jan 7 '17 at 17:26





                                Remove quotes over red: <option style="color: red;">

                                – dy_
                                Jan 7 '17 at 17:26













                                This straight up does not work, period.

                                – frabjous
                                Feb 2 '18 at 20:56





                                This straight up does not work, period.

                                – frabjous
                                Feb 2 '18 at 20:56











                                0














                                It's 2017 and it IS possible to target specific select options. In my project I have a table with a class="variations", and the select options are in the table cell td="value", and the select has an ID select#pa_color.
                                The option element also has a class option="attached" (among other class tags).
                                If a user is logged in as a wholesale customer, they can see all of the color options. But retail customers are not allowed to purchase 2 color options, so I've disabled them



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


                                It took a little logic, but here is how I targeted the disabled select options.



                                CSS



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


                                With that, my color options are only visible to wholesale customers.






                                share|improve this answer






























                                  0














                                  It's 2017 and it IS possible to target specific select options. In my project I have a table with a class="variations", and the select options are in the table cell td="value", and the select has an ID select#pa_color.
                                  The option element also has a class option="attached" (among other class tags).
                                  If a user is logged in as a wholesale customer, they can see all of the color options. But retail customers are not allowed to purchase 2 color options, so I've disabled them



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


                                  It took a little logic, but here is how I targeted the disabled select options.



                                  CSS



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


                                  With that, my color options are only visible to wholesale customers.






                                  share|improve this answer




























                                    0












                                    0








                                    0







                                    It's 2017 and it IS possible to target specific select options. In my project I have a table with a class="variations", and the select options are in the table cell td="value", and the select has an ID select#pa_color.
                                    The option element also has a class option="attached" (among other class tags).
                                    If a user is logged in as a wholesale customer, they can see all of the color options. But retail customers are not allowed to purchase 2 color options, so I've disabled them



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


                                    It took a little logic, but here is how I targeted the disabled select options.



                                    CSS



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


                                    With that, my color options are only visible to wholesale customers.






                                    share|improve this answer















                                    It's 2017 and it IS possible to target specific select options. In my project I have a table with a class="variations", and the select options are in the table cell td="value", and the select has an ID select#pa_color.
                                    The option element also has a class option="attached" (among other class tags).
                                    If a user is logged in as a wholesale customer, they can see all of the color options. But retail customers are not allowed to purchase 2 color options, so I've disabled them



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


                                    It took a little logic, but here is how I targeted the disabled select options.



                                    CSS



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


                                    With that, my color options are only visible to wholesale customers.







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited Feb 28 '18 at 7:53









                                    weBBer

                                    4,23542050




                                    4,23542050










                                    answered Aug 28 '17 at 22:04









                                    Mr. GarrisonMr. Garrison

                                    2617




                                    2617























                                        0














                                        You can use inline styles to add custome styling to <option> tags.



                                        For eg : <option style="font-weight:bold;color:#09C;">Option 1</option>
                                        This will apply the styles to this particular <option> element only.



                                        Then you can use a bit of javascript magic to apply the inline styles to all of the <option> elements within a <select> tag like so :



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



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



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



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



                                        You can also use <option value="" disabled> <br> </option> to add a line-break between the options.






                                        share|improve this answer




























                                          0














                                          You can use inline styles to add custome styling to <option> tags.



                                          For eg : <option style="font-weight:bold;color:#09C;">Option 1</option>
                                          This will apply the styles to this particular <option> element only.



                                          Then you can use a bit of javascript magic to apply the inline styles to all of the <option> elements within a <select> tag like so :



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



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



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



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



                                          You can also use <option value="" disabled> <br> </option> to add a line-break between the options.






                                          share|improve this answer


























                                            0












                                            0








                                            0







                                            You can use inline styles to add custome styling to <option> tags.



                                            For eg : <option style="font-weight:bold;color:#09C;">Option 1</option>
                                            This will apply the styles to this particular <option> element only.



                                            Then you can use a bit of javascript magic to apply the inline styles to all of the <option> elements within a <select> tag like so :



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



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



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



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



                                            You can also use <option value="" disabled> <br> </option> to add a line-break between the options.






                                            share|improve this answer













                                            You can use inline styles to add custome styling to <option> tags.



                                            For eg : <option style="font-weight:bold;color:#09C;">Option 1</option>
                                            This will apply the styles to this particular <option> element only.



                                            Then you can use a bit of javascript magic to apply the inline styles to all of the <option> elements within a <select> tag like so :



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



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



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



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



                                            You can also use <option value="" disabled> <br> </option> to add a line-break between the options.







                                            share|improve this answer












                                            share|improve this answer



                                            share|improve this answer










                                            answered Jul 19 '18 at 14:30









                                            Vinayak MukherjeeVinayak Mukherjee

                                            112




                                            112























                                                0














                                                It's 100% work, basically the select option is rendered by os not by html. That's by the CSS style doesn't effect,.. generally option{font-size : value ; background-color:color code; border-radius:value; } this case work, but we can't customize the padding ,margin etc..
                                                Below code 100% work to customize select tag






                                                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>








                                                share|improve this answer


























                                                • From Review: Hi, please don't answer just with source code. Try to provide a nice description about how your solution works. See: How do I write a good answer?. Thanks

                                                  – sɐunıɔןɐqɐp
                                                  Oct 20 '18 at 7:52
















                                                0














                                                It's 100% work, basically the select option is rendered by os not by html. That's by the CSS style doesn't effect,.. generally option{font-size : value ; background-color:color code; border-radius:value; } this case work, but we can't customize the padding ,margin etc..
                                                Below code 100% work to customize select tag






                                                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>








                                                share|improve this answer


























                                                • From Review: Hi, please don't answer just with source code. Try to provide a nice description about how your solution works. See: How do I write a good answer?. Thanks

                                                  – sɐunıɔןɐqɐp
                                                  Oct 20 '18 at 7:52














                                                0












                                                0








                                                0







                                                It's 100% work, basically the select option is rendered by os not by html. That's by the CSS style doesn't effect,.. generally option{font-size : value ; background-color:color code; border-radius:value; } this case work, but we can't customize the padding ,margin etc..
                                                Below code 100% work to customize select tag






                                                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>








                                                share|improve this answer















                                                It's 100% work, basically the select option is rendered by os not by html. That's by the CSS style doesn't effect,.. generally option{font-size : value ; background-color:color code; border-radius:value; } this case work, but we can't customize the padding ,margin etc..
                                                Below code 100% work to customize select tag






                                                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>








                                                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>





                                                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>






                                                share|improve this answer














                                                share|improve this answer



                                                share|improve this answer








                                                edited Oct 22 '18 at 13:43

























                                                answered Oct 20 '18 at 7:26









                                                Harikrishnan kHarikrishnan k

                                                214




                                                214













                                                • From Review: Hi, please don't answer just with source code. Try to provide a nice description about how your solution works. See: How do I write a good answer?. Thanks

                                                  – sɐunıɔןɐqɐp
                                                  Oct 20 '18 at 7:52



















                                                • From Review: Hi, please don't answer just with source code. Try to provide a nice description about how your solution works. See: How do I write a good answer?. Thanks

                                                  – sɐunıɔןɐqɐp
                                                  Oct 20 '18 at 7:52

















                                                From Review: Hi, please don't answer just with source code. Try to provide a nice description about how your solution works. See: How do I write a good answer?. Thanks

                                                – sɐunıɔןɐqɐp
                                                Oct 20 '18 at 7:52





                                                From Review: Hi, please don't answer just with source code. Try to provide a nice description about how your solution works. See: How do I write a good answer?. Thanks

                                                – sɐunıɔןɐqɐp
                                                Oct 20 '18 at 7:52











                                                0














                                                You can add a class and gives font-weight:700; in option. But by using this all the text will become bold.






                                                share|improve this answer




























                                                  0














                                                  You can add a class and gives font-weight:700; in option. But by using this all the text will become bold.






                                                  share|improve this answer


























                                                    0












                                                    0








                                                    0







                                                    You can add a class and gives font-weight:700; in option. But by using this all the text will become bold.






                                                    share|improve this answer













                                                    You can add a class and gives font-weight:700; in option. But by using this all the text will become bold.







                                                    share|improve this answer












                                                    share|improve this answer



                                                    share|improve this answer










                                                    answered Nov 28 '18 at 6:25









                                                    Anas ChaudharyAnas Chaudhary

                                                    1




                                                    1























                                                        -1














                                                        Actually you can add :before and :after and style those. At least it's something






                                                        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;
                                                        }








                                                        share|improve this answer




























                                                          -1














                                                          Actually you can add :before and :after and style those. At least it's something






                                                          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;
                                                          }








                                                          share|improve this answer


























                                                            -1












                                                            -1








                                                            -1







                                                            Actually you can add :before and :after and style those. At least it's something






                                                            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;
                                                            }








                                                            share|improve this answer













                                                            Actually you can add :before and :after and style those. At least it's something






                                                            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;
                                                            }








                                                            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;
                                                            }





                                                            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;
                                                            }






                                                            share|improve this answer












                                                            share|improve this answer



                                                            share|improve this answer










                                                            answered Oct 16 '17 at 14:40









                                                            ProSales SoftwaresystemeProSales Softwaresysteme

                                                            1




                                                            1























                                                                -3














                                                                Like stated above, not really possible; however, if you just want to style the initial state for something like a 'Select Product...' option before a user interacts with the field, you could do something like below --



                                                                The below example styles (technically all) the first option red and once a user interacts will remove that option (which has the value="defaultValue" set) and remove the class applied to the select. You can apply other options besides color as well, but they will only affect the field once changed, not the list view.



                                                                CSS



                                                                .default-value{
                                                                color: red;
                                                                }


                                                                jQuery



                                                                $("select").addClass('default-value');

                                                                $("select").bind("focus", function () {
                                                                $(this).children('option[value="defaultValue"]').remove();
                                                                $(this).removeClass('default-value');
                                                                });





                                                                share|improve this answer






























                                                                  -3














                                                                  Like stated above, not really possible; however, if you just want to style the initial state for something like a 'Select Product...' option before a user interacts with the field, you could do something like below --



                                                                  The below example styles (technically all) the first option red and once a user interacts will remove that option (which has the value="defaultValue" set) and remove the class applied to the select. You can apply other options besides color as well, but they will only affect the field once changed, not the list view.



                                                                  CSS



                                                                  .default-value{
                                                                  color: red;
                                                                  }


                                                                  jQuery



                                                                  $("select").addClass('default-value');

                                                                  $("select").bind("focus", function () {
                                                                  $(this).children('option[value="defaultValue"]').remove();
                                                                  $(this).removeClass('default-value');
                                                                  });





                                                                  share|improve this answer




























                                                                    -3












                                                                    -3








                                                                    -3







                                                                    Like stated above, not really possible; however, if you just want to style the initial state for something like a 'Select Product...' option before a user interacts with the field, you could do something like below --



                                                                    The below example styles (technically all) the first option red and once a user interacts will remove that option (which has the value="defaultValue" set) and remove the class applied to the select. You can apply other options besides color as well, but they will only affect the field once changed, not the list view.



                                                                    CSS



                                                                    .default-value{
                                                                    color: red;
                                                                    }


                                                                    jQuery



                                                                    $("select").addClass('default-value');

                                                                    $("select").bind("focus", function () {
                                                                    $(this).children('option[value="defaultValue"]').remove();
                                                                    $(this).removeClass('default-value');
                                                                    });





                                                                    share|improve this answer















                                                                    Like stated above, not really possible; however, if you just want to style the initial state for something like a 'Select Product...' option before a user interacts with the field, you could do something like below --



                                                                    The below example styles (technically all) the first option red and once a user interacts will remove that option (which has the value="defaultValue" set) and remove the class applied to the select. You can apply other options besides color as well, but they will only affect the field once changed, not the list view.



                                                                    CSS



                                                                    .default-value{
                                                                    color: red;
                                                                    }


                                                                    jQuery



                                                                    $("select").addClass('default-value');

                                                                    $("select").bind("focus", function () {
                                                                    $(this).children('option[value="defaultValue"]').remove();
                                                                    $(this).removeClass('default-value');
                                                                    });






                                                                    share|improve this answer














                                                                    share|improve this answer



                                                                    share|improve this answer








                                                                    edited Apr 27 '13 at 15:41









                                                                    Victor Bjelkholm

                                                                    1,32272247




                                                                    1,32272247










                                                                    answered Jul 27 '12 at 22:47









                                                                    Stephen SprinkleStephen Sprinkle

                                                                    1,0121113




                                                                    1,0121113






























                                                                        draft saved

                                                                        draft discarded




















































                                                                        Thanks for contributing an answer to Stack Overflow!


                                                                        • Please be sure to answer the question. Provide details and share your research!

                                                                        But avoid



                                                                        • Asking for help, clarification, or responding to other answers.

                                                                        • Making statements based on opinion; back them up with references or personal experience.


                                                                        To learn more, see our tips on writing great answers.




                                                                        draft saved


                                                                        draft discarded














                                                                        StackExchange.ready(
                                                                        function () {
                                                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f7208786%2fhow-to-style-the-option-of-a-html-select%23new-answer', 'question_page');
                                                                        }
                                                                        );

                                                                        Post as a guest















                                                                        Required, but never shown





















































                                                                        Required, but never shown














                                                                        Required, but never shown












                                                                        Required, but never shown







                                                                        Required, but never shown

































                                                                        Required, but never shown














                                                                        Required, but never shown












                                                                        Required, but never shown







                                                                        Required, but never shown







                                                                        Popular posts from this blog

                                                                        Guess what letter conforming each word

                                                                        Port of Spain

                                                                        Run scheduled task as local user group (not BUILTIN)