Hjemmeside » Coding » Guide til CSS Viewport Units vw, vh, vmin, vmax

    Guide til CSS Viewport Units vw, vh, vmin, vmax

    Viewport-procentlængder, eller viewport enheder som de hyppigere henvises til, er responsive CSS-enheder, der giver dig mulighed for at definere dimensioner som en procentdel af bredden eller længden af ​​visningsporten. Viewport-enheder kan være ganske nyttige i tilfælde, hvor andre responsive CSS-enheder, såsom procentsatser, er svært at lave arbejde.

    Selvom W3C's dokumentation på viewport enheder indeholder alt, hvad der kan sættes i teori, det er ikke meget verbose. Så i denne artikel får vi et kig på, hvordan disse CSS-enheder arbejde i praksis.

    Viewport højde (vh) og visningsbredde (vw)

    W3C definerer viewport som “størrelsen af ​​den indledende indeholdende blok”. Med andre ord er viewport området indeholdt i browservinduet eller et andet visningsområde på en skærm.

    Det vw og vh enheder står for procentdelen af ​​bredden og højden af ​​den faktiske viewport. De kan tage en værdi mellem 0 og 100 i henhold til følgende regler:

     100vw = 100% af visningsbredde 1vw = 1% af visningsbredde 100vh = 100% af visningshøjde 1vh = 1% af udsynshøjde 
    Forskelle til procentdel enheder

    Så hvordan er viewport-enheder forskellige fra procentvise enheder? Procentdel enheder arve størrelsen af ​​deres overordnede element mens viewport-enheder ikke gør det. Viewport-enheder beregnes altid som procentdel af visningsstørrelsen. Som et resultat kan et element, der er defineret af viewport-enheder, overstige størrelsen af ​​dets overordnede.

    Eksempel: Fuldskærms sektioner

    Fuldskærms sektioner er nok de mest kendte brugen tilfælde af viewport enheder.

    Det HTML er ret simpelt; vi har bare tre sektioner under hinanden og vi vil have dem alle til dække hele skærmen (men ikke mere).

      

    I CSS bruger vi 100vh som en højde værdi og 100% som bredde. Vi bruger ikke vw enhed her som standard, scrollbars er også tilføjet til viewportstørrelsen. Så hvis vi brugte bredde: 100vw; regel a vandret rullepanel ville ses på nederst i browservinduet.

     * margin: 0; polstring: 0;  afsnit baggrundsstørrelse: dækning; baggrundsstilling: center; bredde: 100%; højde: 100vh;  .sektion-1 baggrundsbillede: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img1.jpg');  .sektion-2 baggrundsbillede: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img2.jpg');  .sektion-3 baggrundsbillede: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img3.jpg');  

    På gif demoen nedenfor kan du se det vh er virkelig en lydhør enhed.

    Ifølge W3C-dokumenterne er ovennævnte vandret rullebjælke problem kan løses ved at tilføje overløb: auto; regere til rodelementet. Denne løsning fungerer kun delvist, selvom. Den vandrette rullebjælke forsvinder faktisk, men bredde er beregnes stadig baseret på visningsbredden (sidebjælken inkluderet), så elementerne vil være lidt større, end de burde være.

    Jeg vil sige, jeg ville ikke tør bruge vw enhed på dimensionering af fuldskærmselementer på grund af denne grund. Vi behøver det ikke engang, som den bredde: 100%; regel fungerer perfekt. Med fuldskærm layouter har den rigtige udfordring altid været hvordan Indstil en passende højdeværdi og vh Enheden giver en strålende løsning til det.

    Andre anvendelsessager

    Hvis du er interesseret i andre anvendelsessager vw og vh Lullabot har en god artikel, der lister a håndfuld egentlige eksempler (med Codepen demoer), såsom:

    • Fast-forhold kort.
    • Holder et element kortere end skærmen.
    • Skalering af tekst.
    • Bryder ud af beholderen.

    Opera.dev har også en kort vejledning om hvordan du kan udnytte den vw enhed i skabe responsiv typografi.

    Du kan ikke kun bruge viewport-enheder på bredde og højde egenskaber men på enhver anden. For eksempel kan du Indstil størrelsen af ​​paddings og margener bruger vw og vh enheder også.

    Viewport min (Vmin) & viewport max (vmax)

    Det Vmin og vmax enheder giver dig mulighed for at få adgang til Størrelsen af ​​den mindre eller den større side af visningsporten i henhold til følgende regler:

     100vmin = 100vw eller 100vh, afhængigt af hvilket der er mindre 1vmin = 1vw eller 1vh, alt efter hvad der er mindre 100vmax = 100vw eller 100vh, afhængigt af hvilket der er større 1vmax = 1vw eller 1vh, alt efter hvad der er større 

    Så i tilfælde af a portræt orientering, 100vmin er lig med 100vw, som viewport er mindre vandret end lodret. Af samme grund, 100vmax vil være lig med 100vh.

    Tilsvarende, i tilfælde af a landskabsorientering, 100vmin er lig med 100vh, som viewport er mindre lodret end vandret. Og selvfølgelig, 100vmax vil være lig med 100vw her.

    Eksempel: Lav helte tekster læsbare på hver skærm

    Det Vmin og vmax enheder er meget mindre almindeligt kendt end vw og vh. De kan dog udmærket bruges som en erstatning for orientering @medier forespørgsler. For eksempel, Vmin og vmax kan komme i brug, når du har elementer, der kan se mærkeligt ud ved forskellige aspektforhold.

    Den nye kode har en god tutorial, hvor de diskuterer hvordan du kan holde helten tekst læselig på hver skærm, ved hjælp af Vmin enhed. Heltekster er tilbøjelige til at se ud for lille på mobil og for stor på store skærme.

    Her er hovedidéen for deres løsning:

     h1 skriftstørrelse: 20vmin; font-familie: Avenir, sans-serif; skrifttype-vægt: 900; tekst-align: center;  

    I Codepen demo kan du tjekke hvordan Vmin løser læsbarhedsproblemet med helttekster. Få adgang til “Fuld side” se på Codepen, da ændre størrelsen på dit browservindue både vandret og lodret for at se, hvordan heltens tekst ændres.

    Browser support

    Som du kan se på CanIUse-diagrammet nedenfor, browser support er forholdsvis god for viewport enheder. Husk dog, at nogle versioner af IE og Edge ikke understøtter vmax. Også iOS 6 og 7 har et problem med vh enhed, som blev rettet i iOS 8.