1

I need to change select options hover background color using only css.

Please check the link : https://jsfiddle.net/bilashcse/k2o783rp/

My code :

HTML :

<div>
  <select>
    <option>Apples</option>
    <option selected>Pineapples</option>
    <option>Chocklate</option>
    <option>Pancakes</option>
  </select>
</div>

CSS :

select {
   margin: 50px;
    border: 1px solid #111;
   background: transparent;
   width: 150px;
   padding: 5px 35px 5px 5px;
   font-size: 16px;
   border: 1px solid #ccc;
   height: 34px;
   -webkit-appearance: none;
   -moz-appearance: none;
   appearance: none;
    background: url(http://www.stackoverflow.com/favicon.ico) 96% / 15% no-repeat #eee;
} 
select option:hover{
  background:red !important;
}
Md Nazmul Hossain
  • 2,768
  • 5
  • 26
  • 49

3 Answers3

6

We can do this with minimal changes.

    <html>
    <head>
    <style>
    option:hover{background-color:yellow;}
    </style>
    </head>
    <body>
    <select onfocus='this.size=10;' onblur='this.size=0;' 
            onchange='this.size=1; this.blur();'>
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="opel">Opel</option>
      <option value="audi">Audi</option>
        <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="opel">Opel</option>
      <option value="audi">Audi</option>
        <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="opel">Opel</option>
      <option value="audi">Audi</option>
        <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="opel">Opel</option>
      <option value="audi">Audi</option>
    </select>
    
    </body>
    </html>`
Krishnaraj
  • 485
  • 4
  • 4
4

It's not easy to change the style of <option> elements. They are rendered by your OS and partially by your CSS code.

The only option is to uses the 'box-shadow' CSS property, but keep in mind that you must adapt it for each OS.

TimothePearce
  • 1,128
  • 1
  • 11
  • 22
0

Ref

.blue:hover {background: blue;}

.green:hover {background: green;}

.red:hover {background: red;}
<select onfocus='this.size=3;' onblur='this.size=0;' 
            onchange='this.size=1; this.blur();'>
<option class="blue" >blue background</option>
<option class="green" >green background</option>
<option class="red" >red background</option>
</select>
mohan mu
  • 73
  • 1
  • 4