Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the style of a <select>'s <optgroup> label?

Tags:

html

css

styling

I have a simple select box with an option group in my application.

<select>
   <optgroup label="Swedish Cars">
     <option value="volvo">Volvo</option>
     <option value="saab">Saab</option>
   </optgroup>
   ----
   ----
   ----
</select>

When it gets displayed in browser, the option group label is displayed in bold and italic; I want it to be displayed without any of those styles.

like image 930
Gnanz Avatar asked Sep 17 '11 04:09

Gnanz


People also ask

Can you style Optgroup?

A style attribute on an <optgroup> tag assigns a unique style to the option group. Its value is CSS that defines the appearance of the option group.

What does Optgroup mean in HTML?

Definition and Usage The <optgroup> tag is used to group related options in a <select> element (drop-down list). If you have a long list of options, groups of related options are easier to handle for a user.

Can Optgroup be selected?

From Select2 docs: "Furthermore, <optgroup> elements cannot be made selectable. This is a limitation of the HTML specification and is not a limitation that Select2 can overcome."

How do I hide Optgroup labels?

The hidden attribute hides the <optgroup> element. You can specify either 'hidden' (without value) or 'hidden="hidden"'. Both are valid. A hidden <optgroup> element is not visible, but it maintains its position on the page.


3 Answers

On most browsers (tested on latest IE and FF), you can easily change the optgroup's label with CSS only:

    select optgroup{
    background:#000;
    color:#fff;
    font-style:normal;
    font-weight:normal;
    }

Obviously, you can set any classname instead of the select html tag.

By the way, as other answers said, there are still few CSS options to use with select boxes and many webmasters override them using the method given by user949847. But this code above should be sufficient to match your needs.

like image 94
Helrik Avatar answered Nov 07 '22 13:11

Helrik


Unfortunately select boxes are one of the few things that you can add very little style to with CSS. You are usually limited to how the browser renders it.

For example, it looks like this in chrome:

enter image description here

And this in Firefox:

enter image description here

like image 21
wesbos Avatar answered Nov 07 '22 13:11

wesbos


Firefox style the label using this rule :

optgroup:before {
    content: attr(label);
    display: block;
}

You can override it.

like image 25
nniico Avatar answered Nov 07 '22 13:11

nniico