Pagina principala » Codificare » Ghid pentru unitățile de vizualizare CSS vw, vh, vmin, vmax

    Ghid pentru unitățile de vizualizare CSS vw, vh, vmin, vmax

    Proporția lungimilor procentuale, sau unități de vizualizare deoarece acestea sunt mai frecvent menționate, sunt unități de răspuns CSS care vă permit să definiți dimensiunile ca procent din lățimea sau lungimea portului de vizualizare. Unitățile de vizualizare pot fi destul de utile în cazurile în care alte unități CSS responsabile, cum ar fi procentele, sunt greu să facă muncă.

    Cu toate ca Documentația W3C pe unitățile de vizualizare conține tot ce poate fi pus în teorie, nu este foarte verbose. Deci, în acest articol, vom analiza modul în care aceste unități CSS lucrează în practică.

    Înălțimea ferestrei (vh) și lățimea ferestrei de vizualizare (vw)

    W3C definește fereastra de vizualizare la fel de “dimensiunea blocului inițial care conține”. Cu alte cuvinte, fereastra de vizualizare este zona conținută în fereastra browserului sau orice altă zonă de vizionare pe ecran.

    vw și vh Unități reprezintă procentul lățimii și înălțimii ferestrei de vizualizare reale. Ele pot lua o valoare între 0 și 100 conform următoarelor reguli:

     100vw = 100% din lățimea ferestrei de vizualizare 1vw = 1% din lățimea ferestrei de vedere 100vh = 100% din înălțimea ferestrei de vizualizare 1vh = 1% din înălțimea ferestrei de vizualizare 
    Diferențe față de unitățile procentuale

    Deci, cum sunt unitățile de vizualizare diferite decât unitățile procentuale? Unități procentuale moștenește dimensiunea elementului părinte în timp ce unitățile de vizualizare nu au. Unitățile de vizualizare sunt întotdeauna calculate ca procent din dimensiunea ferestrei de vizualizare. Ca rezultat, un element definit de unitățile de vizualizare poate depăși dimensiunea părintelui său.

    Exemplu: secțiuni cu ecran complet

    Secțiuni cu ecran complet sunt probabil cele mai cunoscute cazuri de utilizare a unităților de vizualizare.

    HTML este destul de simplu; tocmai am trei secțiuni unul sub altul și vrem ca fiecare să facă asta acoperă întreg ecranul (dar nu mai mult).

      

    În CSS, folosim 100vh ca înălţime valoare și 100% la fel de lăţime. Nu folosim vw unitate aici ca implicit, barele de scroll sunt, de asemenea, adăugate la dimensiunea ferestrei de vizualizare. Deci, dacă am fi folosit lățime: 100vw; regula a bara de derulare orizontală ar apărea la partea de jos a ferestrei browserului.

     * marja: 0; umplutura: 0;  secțiunea background-size: cover; fundal-poziție: centru; lățime: 100%; înălțime: 100vh;  .secția-1 background-image: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img1.jpg'); . secțiunea-2 background-image: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img2.jpg');  .secția-3 background-image: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img3.jpg');  

    În demonstrația de mai jos, puteți vedea acest lucru vh este cu adevărat o unitate receptivă.

    Potrivit documentelor W3C, cele menționate mai sus problemă orizontală de defilare pot fi rezolvate prin adăugarea overflow: auto; regulă la elementul rădăcină. Această soluție funcționează numai parțial, deşi. Bara de derulare orizontală, într-adevăr, dispare, dar lăţime este încă calculată pe baza lățimii ferestrei de vedere (bara laterală inclusă), deci elementele vor fi puțin mai mari decât ar trebui să fie.

    Aș spune, nu aș îndrăzni să folosesc vw unitate pornit dimensionarea elementelor full-screen din acest motiv. Nici macar nu avem nevoie de ea, ca de lățime: 100%; regula functioneaza perfect. Cu aspectul ecranului complet, adevărata provocare a fost întotdeauna cum să setați o valoare corespunzătoare a înălțimii si vh unitatea oferă o soluție genială pentru asta.

    Alte cazuri de utilizare

    Dacă sunteți interesat alte cazuri de utilizare vw și vh Lullabot are un articol grozav care listează a o multime de exemple din viata reala (cu demonstrații Codepen), cum ar fi:

    • Carduri cu rate fixe.
    • Păstrarea unui element mai scurt decât ecranul.
    • Scalarea textului.
    • Eliminarea din container.

    Opera.dev are, de asemenea, un scurt tutorial cu privire la modul în care puteți lua pârghie de vw unitate în crearea de tipografie receptivă.

    Nu puteți utiliza numai unități de vizualizare în lăţime și înălţime dar pe oricare altul. De exemplu, puteți setați dimensiunea plăcuțelor și margini folosind vw și vh unități.

    Valoarea vizualizării min (Vmin) și max.Vmax)

    Vmin și Vmax unitățile vă permit să accesați mărimea laturii mai mici sau mai mari din portul de vizualizare, conform următoarelor reguli:

     100vmin = 100vw sau 100vh, oricare dintre acestea este mai mică 1vmin = 1vw sau 1vh, oricare dintre acestea este mai mică 100vmax = 100vw sau 100vh, oricare dintre acestea este mai mare 1vmax = 1vw sau 1vh, oricare dintre acestea este mai mare 

    Deci, în cazul unui a orientare portret, 100vmin este egal cu 100vw, ca punct de vedere mai mic decât orizontal. Pentru același motiv, 100vmax va fi egal cu 100vh.

    În mod similar, în cazul a Orientarea peisajului, 100vmin este egal cu 100vh, ca punct de vedere mai mic decât la orizontală. Și, desigur, 100vmax va fi egal cu 100vw aici.

    Exemplu: Faceți textele eroului citibile pe fiecare ecran

    Vmin și Vmax unitățile sunt mult mai puțin cunoscute decât vw și vh. Cu toate acestea, ele pot fi utilizate excelent ca a substitui orientarea @mass-media întrebări. De exemplu, Vmin și Vmax pot veni la îndemână atunci când aveți elemente care ar putea părea ciudate la rate diferite de aspect.

    Codul nou are un tutorial excelent în care discută despre cum poți păstrați textul eroului lizibil pe fiecare ecran, folosind Vmin unitate. Textele eroilor sunt predispuse să privească prea mic pe mobil și prea mare pe monitoare mari.

    Iată principala idee a soluției lor:

     h1 font-size: 20vmin; font-family: Avenir, sans-serif; greutate font: 900; text-align: centru;  

    În demo-ul Codepen, puteți să verificați cum Vmin rezolvă problema lizibilității textelor eroului. Accesați “Pagină plină” vezi pe Codepen, atunci redimensionați fereastra browserului atât pe orizontală cât și pe verticală pentru a vedea cum se schimbă textul eroului.

    Suport pentru browser

    După cum puteți vedea în graficul CanIUse de mai jos, suportul pentru browser este relativ bun pentru unitățile de vizualizare. Cu toate acestea, rețineți că unele versiuni ale IE și Edge nu acceptă Vmax. De asemenea, iOS 6 și 7 au o problemă cu vh unitate, care a fost fixat în iOS 8.