Různá šířka číselného pole s min/max

I přes značné posuny je stylování HTML formulářů stále jednou z největších výzev.

Do hry zde vstupují výchozí styly prohlížeče a operačního systému.

Jedna taková specialita je různá šířka číselného pole.

Prohlížeč se snaží podle omezeného rozmezí čísel chytře určovat šířku <input>u.

Může to způsobovat dost divné stavy, když se právě atributy min a max používají pro validaci na straně klienta.

Zvlášť v případě, kdy jsou dynamické, může docházet k nepěknému poskakování.

Jak je vidět na ukázce, v závislosti na minimální/maximální hodnotě prohlížeč přizpůsobuje šířku políčka.

(min 0, max 100)
(min 0, max 10000)
(min 0, max 1.7976931348623157e308)
(max 10000)
(text)

Samostatná živá ukázka

Dělá to pouze při vyplnění obou atributů.

Řešení

Bohužel 100% universální a uspokojivé řešení neznám.

V některých případech to nemusí vadit.

Ono obecně nastavovat šířku políčka podle očekávaného obsahu je rozumné pro lepší pochopení formuláře ze strany uživatele.

Vadí-li to, asi nejsnazší je nastavit políčku pevnou šířku (width).

Výchozí šířka <input>u je ale proměnlivá napříč prohlížeči. Pro stejnou šířku s textovými políčky (<input type=text>) je tak potřeba explicitně nastavit šířku i pro ně.

V macOS pozoruji následující výchozí rozměry textových políček:

  • Safari – 148 × 19 px
  • Chrome, Edge, Brave – 153 × 21 px
  • Firefox – 189 × 21 px

Dostupná šířka

Cesta k sjednocení může být i nastavení šířky na dostupnou a následné omezení, aby políčko nebylo zbytečně široké.

input {
    width: -webkit-fill-available;
    max-width: 8ch;
}

Jednotka ch zde representuje šířku číslice 0 v aktuálním fontu políčka. Jde tak přibližně docílit šířky dle očekávaného počtu číslic.

Atribut size totiž u číselného políčka nic nedělá.

Šířka podle obsahu

Docela zajímavá je vlastnost field-sizing: content, kdy se šířka obsahu přizpůsobuje šířce obsahu.

Může to jít hezky zkombinovat s minimální šířkou. Ale funguje jen v Chrome.

input {
    field-sizing: content;
    min-width: 8ch;
}

Odkazy

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

Stylování formulářových políček

Stylování formulářových políček a tlačítek

Které CSS vlastnosti si ohlídat při dosahování perfektního stylu vstupní políček a odesílacích tlačítek.

Stylování tabulky

Stylování HTML tabulek

Jednoduché barvení a další stylování značky <table>.

Vylepšené stylování checkboxů

Pokročilé stylování checkboxu

Díky selektoru :checked lze v podporujících prohlížečích (Explorer 9 a novější) vytvářet zaškrtávací <input>y neotřelé podoby.

Stylování atributu title

Vlastní styl bubliny title

Jaké jsou možnosti pro vlastní vzhled nápovědy, která se objevuje při vyplnění atributu title.

Stylování <select>u

Stylování <select>u

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

Komentáře