Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is it so hard to style <select> and <option> elements?

Tags:

html

browser

css

Can any browser developer, or anyone who knows why it is so difficult (if not impossible) to style the dropdown list of a <select>, there's any "real explanation" that prevents browsers treat the <select> <option> in a more convenient way.

Every time I see questions like How to modify CSS of a dropdown? in different sites that receive answers like

"It's not possible to style the dropdown list of a html select. But you can build your own dropdown list or use a framework like bootstrap."

or

"If you decide that it's absolutely a good idea to customize a dropdown, then you should use JavaScript".

And I really don't know why, I know now the <select>, I mean the container box, can be styled a little more using

select {
   -webkit-appearance: none;
   -moz-appearance: none;
   appearance: none;
}

And then giving our styles, which is not as simple as all say because we have to do some tricks to make it right, especially with the famous litter arrow.

As time passes we are neglecting such a simple and comfortable as the <select> element and almost all the developers opted to use some of the answers above and at least I still do not know why.

So at least I will be grateful if someone could help me.

like image 308
Yandy_Viera Avatar asked Jun 10 '15 07:06

Yandy_Viera


People also ask

How do you style the Select option element?

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.

Can you style a select element?

Styling the button part We can apply CSS properties to the <select> element and change its background color, borders, font, size, margin, padding, and more.

Can you style a select tag in HTML?

A style attribute on a <select> tag assigns a unique style to the dropdown. Its value is CSS that defines the appearance of the dropdown control.

How do I style a selection dropdown in CSS?

There are many ways to design a <select> dropdown menu using CSS. The Dropdown Menu is mainly used to select an element from the list of elements. Each menu option can be defined by an <option> element that can nested inside the <select> element.


1 Answers

Dropdown lists are highly dependent on the system they're running on. Just look what they look(ed) like on iOS:

iOS

The <select> element is giving you a uniform way to mark up the functionality of a list of options which can be selected. How that list is represented is entirely up to the browser, and the browser can implement it in the best possible way for the given circumstances. As such it makes no sense to try to "style" it in any way, because you cannot predict how it's going to be presented in the first place.

Usually every operating system a browser runs on has native dropdown lists, and they can look very differently on different systems. The idea is that the <select> element can use the native dropdown list style of the underlying operating system.

It's not that it's "hard" to do, it's that styling a dropdown list makes no sense given the presentation-neutral priorities the <select> element embodies. It is the lowest common denominator of what a dropdown list is across all systems, hence system-specific styling makes no sense.

like image 183
deceze Avatar answered Dec 18 '22 05:12

deceze