Úvodná » kódovanie » Sprievodca jednotkami výstupu CSS vw, vh, vmin, vmax

    Sprievodca jednotkami výstupu CSS vw, vh, vmin, vmax

    Dĺžka výrezu v percentách, alebo zobrazovacích jednotiek ako sú často nazývané, sú citlivé jednotky CSS, ktoré vám umožňujú definovať dimenzie ako percento zo šírky alebo dĺžky výrezu. Výstavné jednotky môžu byť celkom užitočné v prípadoch, keď sú iné citlivé jednotky CSS, napríklad percentá ťažké robiť prácu.

    Hoci Dokumentácia W3C na zobrazovacích jednotkách obsahuje všetko, čo môže byť uvedené do teórie, nie je to dosť verbózne. Takže v tomto článku sa pozrieme na to, ako tieto jednotky CSS pracovať v praxi.

    Výška výrezu (vh) a šírka výhľadu (vw)

    W3C definuje výrez ako “veľkosť počiatočného bloku”. Inými slovami, výrez je oblasť v okne prehliadača alebo inú zobrazovaciu plochu na obrazovke.

    vw a vh Jednotky stojace za percento šírky a výšky skutočného výrezu. Môžu mať hodnotu medzi 0 a 100 podľa nasledujúcich pravidiel:

     100vw = 100% šírky výrezu 1vw = 1% šírky pohľadu 100vh = 100% výšky výrezu 1vh = 1% výšky výrezu 
    Rozdiely v percentuálnych jednotkách

    Takže, ako sa zobrazovacie jednotky líšia od percentuálnych jednotiek? Percento jednotiek zdedia veľkosť ich rodičovského prvku zatiaľ čo zobrazovacie jednotky nemajú. Jednotky výrezu sú vždy vypočítané ako percento veľkosti výrezu. V dôsledku toho môže prvok definovaný zobrazovacími jednotkami prekročiť veľkosť jeho rodičov.

    Príklad: Úseky s plnou obrazovkou

    Úseky s plnou obrazovkou sú pravdepodobne najznámejšie prípady použitia zobrazovacích jednotiek.

    HTML je veľmi jednoduché; len to máme tri úseky pod sebou a chceme, aby každý z nich pokryť celú obrazovku (ale nie viac).

      

    V CSS používame 100vh ako výška hodnota a 100% ako šírka. Nepoužívame vw jednotky tu ako predvolené, sú tiež pridané posúvacie panely do veľkosti výrezu. Takže ak sme použili šírka: 100vw; pravidlo a horizontálna posuvná lišta by sa objavil na spodnej časti okna prehliadača.

     * margin: 0; polstrovanie: 0;  sekcia background-size: cover; pozadie pozadia: centrum; šírka: 100%; výška: 100vh; . sekcia-1 pozadie-obrázok: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img1.jpg'); . sekcia-2 pozadie-obrázok: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img2.jpg');  .section-3 pozadie-obrázok: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img3.jpg');  

    Na demonštrácii gif nižšie to vidíte vh je naozaj citlivá jednotka.

    Podľa dokumentov W3C je to uvedené horizontálna posuvná lišta možno vyriešiť pridaním pretečenie: auto; pravidlo na koreňový prvok. Toto riešenie funguje len čiastočne, hoci. Horizontálna posuvná lišta skutočne zmizne, ale šírka je stále vypočítané na základe šírky zobrazenia (vrátane postrannej lišty), takže prvky budú o niečo väčšie, ako by mali byť.

    Povedal by som, neodvážil by som ho použiť vw jednotka zapnutá dimenzovanie prvkov na celú obrazovku z tohto dôvodu. Nepotrebujeme to ani ako šírka: 100%; pravidlo funguje dokonale. Pri celoplošných rozloženiach bola skutočná výzva vždy taká nastavte správnu výškovú hodnotu a vh jednotka dáva vynikajúce riešenie pre to.

    Iné prípady použitia

    Ak máte záujem iné prípady použitia vw a vh Lullabot má skvelý článok, ktorý uvádza a niekoľko príkladov z reálneho života (s Codepen demos), ako napríklad:

    • Karty s pevným pomerom.
    • Udržiavanie prvku kratšie ako obrazovka.
    • Zmäkčenie textu.
    • Odstránenie kontajnera.

    Opera.dev má tiež krátky návod, ako môžete využiť pákový efekt vw jednotka v vytváranie citlivej typografie.

    Nie je možné používať iba jednotky zobrazenia na šírka a výška vlastnosti, ale na inom. Napríklad, môžete nastavte veľkosť paddings a okrajov pomocou vw a vh aj jednotky.

    Výhľad min (Vmin) & max. výrez (vmax)

    Vmin a vmax Jednotky umožňujú prístup k súboru veľkosť menšej alebo väčšej strany výhľadu podľa nasledujúcich pravidiel:

     100vw = 100vw alebo 100vh, podľa toho, ktorá je menšia 1vmin = 1vw alebo 1vh, podľa toho, ktorá je menšia 100vmax = 100vw alebo 100vh, podľa toho, ktorá je väčšia 1vmax = 1vw alebo 1vh, podľa toho, čo je väčšie 

    Takže v prípade a orientácia na výšku, 100vmin rovná sa 100vw, ako je výrez menšie horizontálne ako vertikálne. Z toho istého dôvodu, 100vmax bude sa rovnať 100vh.

    Podobne, v prípade a orientácia na šírku, 100vmin rovná sa 100vh, ako je výrez vertikálne menší ako horizontálne. A samozrejme, 100vmax bude sa rovnať 100vw tu.

    Príklad: Vytvorte čitateľné texty hrdiny na každej obrazovke

    Vmin a vmax jednotky sú oveľa menej známe než vw a vh. Môžu sa však výborne používať ako a nahradiť orientáciu @media dotazy. Napríklad, Vmin a vmax môže prísť vhod, keď máte prvky, ktoré môžu vyzerať zvláštne pri rôznych pomeroch strán.

    Nový kód má skvelý návod, v ktorom diskutuje o tom, ako môžete udržať hrdinu text čitateľný na každej obrazovke pomocou Vmin jednotkou. Hrdinové texty sú náchylné na pohľad príliš malé na mobilných zariadeniach a príliš veľké na veľkých monitoroch.

    Tu je hlavná myšlienka ich riešenia:

     h1 veľkosť písma: 20vmin; font-family: Avenir, sans-serif; veľkosť písma: 900; text-align: center;  

    V demo Codepen sa môžete pozrieť ako Vmin rieši problém čitateľnosti hrdinských textov. Prístup k “Celá strana” pohľad na Codepen, potom zmena veľkosti okna prehliadača horizontálne i vertikálne, aby ste videli, ako sa mení text hrdiny.

    Podpora prehliadača

    Ako vidíte na nižšie uvedenom grafe CanIUse, podpora prehliadača je pomerne dobrá pre zobrazovacie jednotky. Majte však na pamäti, že niektoré verzie IE a Edge nepodporujú vmax. Tiež iOS 6 a 7 majú problém s vh jednotka, ktorý bol opravený v systéme iOS 8.