Stylování <select>u

Roletový seznam nabízí omezené možnosti v úpravách vzhledu. Které to jsou a jak je rozšířit?

6 minut

Odsazení padding

Funguje od Exploreru 8 na značce <select>, na <option>u umí padding jen Firefox.

Barvy

Obarvení <select>u je možné ve všech prohlížečích. Je možné barvit i konkrétní <option> položky. Pokud se tak neučiní, převezmou položky barvu <select>u.

Jak je vidět z ukázky, nastavení pozadí (background) způsobí přepnutí na oldschool vzhled, téhož je možné docílit vlastností border.

Rámeček border

S rámečky není problém. Firefox je umí i pro jednotlivé položky.

V prohlížečích, které podporují kulaté rohy přes border-radius, není problém ani zakulacení.

Šířka a výška

  • Přenastavení rozměrů je taktéž široce podporováno.
  • Problém je s výškou, kdy různé prohlížeče text různě zarovnávají (není možné použít line-height).
  • Zarovnat text u širokého <select>u pomocí text-align: center funguje jen v Opeře 12.
  • Firefox jako jediný umí nastavit výšku i pro položky výběru.

Písmo

Ohledně písma lze nastavit prakticky vše — tučné písmo, kursivu apod., velikost, barvu (jak je zmíněno výše), atd.

Opět to je možné kromě Firefoxu jen pro celý výběr, tj. pro <select>.

Zvýraznění položky

Při najetí na <select> lze klasicky aplikovat :hover. Otevřený <select> získává :focus.

  • V Explorerech do verse 9 včetně nefunguje :hover, do verse 8 včetně ani :focus.
  • Nastavit vlastní styl pro :hover jednotlivých položek se zdá být nemožné.

Vlastní styl šipky

Standardním způsobem není možné změnit styl šipky znázorňující rozevření seznamu (například jí změnit barvu).

Existují ale způsoby, jak to obejít:

appearance: none

CSS vlastnost appearance nastavená na hodnotu none dokáže vypnout výchozí styl formulářového políčka. Tím se mimo jiné docílí, že se nezobrazí šipka pro rozevření.

Vlastní šipku jde potom snadno absolutně naposicovat na požadované místo. Šipka jde vytvořit i přímo v CSS:

Aby na místě posicované šipky šlo <select> prokliknout, je třeba přidat pointer-events: none.

Samostatná ukázka

Závěr

Jak je vidět, stylování je docela omezené. Pro plnou kontrolu je třeba použít atrapu a <select> ovládat JavaScriptem. Problém je, že vytvořit funkčnost shodnou s obyčejným formulářem je docela komplikované. A hotová řešení často věci jako ovládání klávesnicí apod. neumožňují.

Problémům se stylováním se jde často úplně vyhnout, protože selectbox není úplně ideální formulářový prvek a často jde nahradit uživatelsky příjemnějším ovládacím prvkem:

Odkazy jinam

Co si myslíte o tomto článku?

Diskuse

Související články

CSS item-pack: balance – vyvážené rozložení flex položek

Vlastnost item-pack: balance rozděluje flex položky rovnoměrně mezi řádky, podobně jako text-wrap: balance vyvažuje řádky textu.

11 minut

CSS Container Queries – responsivní komponenty

Jak pomocí @container, container-type a container-name vytvářet komponenty, které se přizpůsobí velikosti svého rodiče místo viewportu.

16 minut

CSS Anchor Positioning – posicování elementů relativně k jiným

Jak pomocí anchor-name, position-anchor a funkce anchor() posicovat elementy relativně k jiným bez JavaScriptu.

6 minut

Centrování na webových stránkách

Moderní způsoby vertikálního i horizontálního centrování v CSS. Flexbox, Grid, margin auto a další techniky.

8 minut

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Přidej se k 500+ čtenářům
Jen kvalitní obsah
Žádný spam

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků · Témata · Zkratky
2013–2026