Startpagina » Coding » Gids voor CSS Viewport Units vw, vh, vmin, vmax

    Gids voor CSS Viewport Units vw, vh, vmin, vmax

    Viewport-percentage lengtes, of kijkvenstereenheden zoals ze vaker worden genoemd, zijn responsieve CSS-eenheden waarmee u dimensies kunt definiëren als een percentage van de breedte of de lengte van de viewport. Viewport-eenheden kunnen erg handig zijn in gevallen waarin andere responsieve CSS-eenheden, zoals percentages, dat wel zijn moeilijk om werk te maken.

    Hoewel W3C's documentatie op viewport-eenheden bevat alles dat in de theorie kan worden gestopt, het is niet erg breedsprakig. Dus, in dit artikel zullen we kijken hoe deze CSS-eenheden werk in de praktijk.

    Hoogte van de kijker (vh) & viewport width (vw)

    W3C definieert viewport zoals “grootte van het oorspronkelijke bevattende blok”. Met andere woorden, viewport is het gebied opgenomen in het browservenster of een ander weergavegebied op een scherm.

    De vw en vh units staan ​​voor het percentage van de breedte en hoogte van de daadwerkelijke viewport. Ze kunnen een waarde aannemen tussen 0 en 100 volgens de volgende regels:

     100vw = 100% van de viewportbreedte 1vw = 1% van de viewportbreedte 100vh = 100% van de viewporthoogte 1vh = 1% van de viewport height 
    Verschillen met percentage eenheden

    Hoe verschillen de viewport-eenheden van het percentage eenheden? Percentage eenheden erven de grootte van hun bovenliggende element terwijl viewport-eenheden dat niet doen. Viewport-eenheden worden altijd berekend als de percentage van de viewport-grootte. Als gevolg hiervan kan een element dat is gedefinieerd door viewport-eenheden de grootte van het bovenliggende element overschrijden.

    Voorbeeld: gedeelten op volledig scherm

    Secties op volledig scherm zijn waarschijnlijk de meest bekende gebruikscasussen van viewport-eenheden.

    De HTML is vrij eenvoudig; we hebben gewoon drie secties onder elkaar en we willen dat elk van hen dat doet bedek het hele scherm (maar niet meer).

      

    In de CSS gebruiken we 100vh als een hoogte waarde en 100% zoals breedte. We gebruiken de vw eenheid hier als standaard, schuifbalken zijn ook toegevoegd naar de viewport-grootte. Dus als we de breedte: 100vw; regel a horizontale schuifbalk zou verschijnen op de onderaan het browservenster.

     * marge: 0; opvulling: 0;  sectie background-size: cover; achtergrond-positie: midden; breedte: 100%; hoogte: 100vh;  .section-1 background-image: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img1.jpg');  .section-2 background-image: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img2.jpg');  .sectie-3 background-image: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img3.jpg');  

    Op de GIF-demo hieronder kun je dat zien vh is echt een responsieve eenheid.

    Volgens de W3C-documenten, de bovengenoemde probleem met horizontale schuifbalk kan worden opgelost door de overloop: auto; regel naar het rootelement. Deze oplossing werkt slechts gedeeltelijk, though. De horizontale schuifbalk verdwijnt inderdaad maar breedte is nog steeds berekend op basis van de breedte van de viewport (inclusief de zijbalk), dus de elementen zijn iets groter dan ze zouden moeten zijn.

    Ik zou zeggen, ik zou het niet durven gebruiken vw eenheid aan dimensionering van elementen op volledig scherm om deze reden. We hebben het zelfs niet nodig, zoals de breedte: 100%; regel werkt perfect. Met de lay-outs op volledig scherm is de echte uitdaging altijd geweest hoe stel de juiste hoogtewaarde in en de vh unit geeft daar een briljante oplossing voor.

    Andere use-cases

    Als je geïnteresseerd bent in andere use-cases vw en vh Lullabot heeft een geweldig artikel met een lijst van een handvol voorbeelden uit de praktijk (met Codepen-demo's), zoals:

    • Kaarten met vaste ratio.
    • Een element korter houden dan het scherm.
    • Tekst schalen.
    • Uit de container breken.

    Opera.dev heeft ook een korte zelfstudie over hoe u gebruik kunt maken van de vw eenheid in het creëren van responsieve typografie.

    U kunt niet alleen viewport-eenheden gebruiken op de breedte en hoogte eigenschappen maar op elke andere. U kunt bijvoorbeeld de grootte van opvullingen en marges instellen de ... gebruiken vw en vh eenheden ook.

    Min. Weergaven (Vmin) & viewport max (vmax)

    De Vmin en vmax eenheden geven u toegang tot de grootte van de kleinere of de grotere kant van de viewport, volgens de volgende regels:

     100vmin = 100vw of 100vh, afhankelijk van welke kleiner is 1vmin = 1vw of 1vh, welke van beide kleiner is 100vmax = 100vw of 100vh, welke groter is 1vmax = 1vw of 1vh, welke groter is 

    Dus in het geval van een portret oriëntatie, 100vmin is gelijk aan 100vw, zoals het kijkvenster is kleiner horizontaal dan verticaal. Om dezelfde reden, 100vmax zal gelijk zijn aan 100vh.

    Evenzo, in het geval van een landschap oriëntatie, 100vmin is gelijk aan 100vh, zoals het kijkvenster is verticaal kleiner dan horizontaal. En uiteraard, 100vmax zal gelijk zijn aan 100vw hier.

    Voorbeeld: maak hero-teksten leesbaar op elk scherm

    De Vmin en vmax eenheden zijn veel minder algemeen bekend dan vw en vh. Ze kunnen echter uitstekend worden gebruikt als een vervanging voor oriëntatie @media queries. Bijvoorbeeld, Vmin en vmax kan handig zijn als je elementen hebt die er vreemd uitzien bij verschillende beeldverhoudingen.

    De nieuwe code heeft een geweldige tutorial waarin ze bespreken hoe je kunt houd helden tekst leesbaar op elk scherm, met behulp van de Vmin eenheid. Heldeksten zijn geneigd om te kijken te klein op mobiel en te groot op grote monitoren.

    Hier is het belangrijkste idee van hun oplossing:

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

    In de demo van Codepen kun je kijken hoe Vmin lost het leesbaarheidsprobleem van heldenteksten op. Toegang krijgen tot “Volledige pagina” zicht op Codepen formaat van uw browservenster wijzigen zowel horizontaal als verticaal om te zien hoe de tekst van de held verandert.

    Browserondersteuning

    Zoals u kunt zien in de CanIUse-grafiek hieronder, browserondersteuning is relatief goed voor viewport-eenheden. Houd er echter rekening mee dat sommige versies van IE en Edge geen ondersteuning bieden vmax. Ook hebben iOS 6 en 7 een probleem met de vh eenheid, die is opgelost in iOS 8.