CSS Viewport ühikute vw, vh, vmin, vmax juhend
Viewport-protsendipikkused, või vaatepordi üksused kui neid sagedamini nimetatakse, on reageerivad CSS-üksused, mis võimaldavad teil määratleda mõõtmeid protsendina vaatepordi laiusest või pikkusest. Viewport ühikud võivad olla üsna kasulikud juhtudel, kui teised reageerivad CSS-üksused, näiteks protsendid, on raske tööd teha.
Kuigi W3C dokumentatsioon vaatepiirkonna üksustes on kõik, mida saab teooriasse panna, see ei ole väga verbose. Niisiis, selles artiklis vaatame, kuidas need CSS-üksused praktikas.
Viewporti kõrgus (vh
) & vaateava laius (vw
)
W3C määratleb vaateava nagu “esialgse sisaldava ploki suurus”. Teisisõnu on vaatlusport ala brauseri aknas või mis tahes muu vaateala ekraanil.
The vw
ja vh
üksused näidata tegeliku vaatluspordi laiuse ja kõrguse protsenti. Nad võivad võtta väärtuse vahemikus 0 kuni 100 vastavalt järgmistele reeglitele:
100vw = 100% vaateava laiusest 1vw = 1% vaateava laiusest 100vh = 100% vaateava kõrgusest 1vh = 1% vaateava kõrgusest
Erinevused protsentides
Niisiis, kuidas erinevad vaatluspordi ühikud protsentuaalsetest ühikutest? Protsentühikud pärida oma vanema elemendi suurus vaatlusportaali üksused ei ole. Viewport ühikud arvutatakse alati kui protsent vaatluspordi suurusest. Selle tulemusena võib vaatluspordi üksuste poolt määratletud element ületada oma vanema suurust.
Näide: täisekraanilõigud
Täisekraanilõigud on ilmselt kõige enam tuntud vaatluspordi üksuste kasutusjuhud.
The HTML on üsna lihtne; meil on lihtsalt kolm lõiku üksteise all ja me tahame, et igaüks neist katta kogu ekraani (kuid mitte rohkem).
CSSis kasutame 100vh
nagu kõrgus
väärtus ja 100%
nagu laius
. Me ei kasuta seda vw
üksus siin vaikimisi, lisatakse ka kerimisribad vaateava suurusele. Niisiis, kui me seda kasutasime laius: 100vw;
reegel a horisontaalne kerimisriba ilmuks brauseri akna all.
* marginaal: 0; polster: 0; sektsioon tausta suurus: kaan; taustapositsioon: keskus; laius: 100%; kõrgus: 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'); .section-3 background-image: url ('https://assets.hongkiat.com/uploads/css-viewport-units-vw-vh-wmin-vmax/img3.jpg');
Allpool olevast gif-demost näete seda vh
on tõesti reageeriv üksus.
W3C dokumentide kohaselt on ülalnimetatud horisontaalse kerimisriba probleem saab lahendada ülevool: auto;
reegel juurelementi. See lahendus töötab ainult osaliselt, küll. Horisontaalne kerimisriba tõepoolest kaob, kuid laius
on arvutatakse ikka veel vaateakna laiuse alusel (kaasas on külgriba), nii et elemendid on veidi suuremad kui need peaksid olema.
Ma ütleksin, et ma ei julgeks seda kasutada vw
üksus sisse lülitatud täisekraani elementide suurus sel põhjusel. Meil pole seda isegi vaja laius: 100%;
reegel toimib suurepäraselt. Täisekraani paigutusega on tõeline väljakutse alati olnud seadke õige kõrguse väärtus ja vh
üksus annab sellele suurepärase lahenduse.
Muud kasutusjuhud
Kui olete huvitatud muud kasutusjuhud vw
ja vh
Lullabotil on suurepärane artikkel, mis loetleb a mõned tegelikud näited (koos Codepeni demodega), näiteks:
- Fikseeritud suhe kaardid.
- Hoides elementi lühem kui ekraan.
- Skaleerimise tekst.
- Mahuti purunemine.
Opera.dev-il on ka lühike õpetus selle kohta, kuidas saaksite vw
üksus tundliku tüpograafia loomine.
Sa ei saa kasutada ainult vaateava üksusi laius
ja kõrgus
omadusi, kuid mis tahes teisele. Näiteks saate määrake paddings ja marginaalid kasutades vw
ja vh
üksused.
Viewport min (vmin
) & viewport max (vmax
)
The vmin
ja vmax
üksused võimaldavad teil juurdepääsu väiksema või suurema külje suurus vaatenurka vastavalt järgmistele reeglitele:
100vmin = 100vw või 100vh, olenevalt sellest, kumb on väiksem 1vmin = 1vw või 1vh, olenevalt sellest, kumb on väiksem 100vmax = 100vw või 100vh, olenevalt sellest, kumb on suurem 1vmax = 1vw või 1vh, olenevalt sellest, kumb on suurem
Niisiis, a puhul portree orientatsioon, 100vmin
on võrdne 100vw
, kui vaateava on väiksem kui vertikaalselt. Samal põhjusel, 100vmax
on võrdne 100vh
.
Samamoodi on a maastiku orientatsioon, 100vmin
on võrdne 100vh
, kui vaateava on väiksem kui horisontaalselt. Ja muidugi, 100vmax
on võrdne 100vw
siin.
Näide: tehke kangelaste tekstid loetavaks igal ekraanil
The vmin
ja vmax
üksused on palju vähem tuntud kui vw
ja vh
. Siiski võib neid suurepäraselt kasutada a asendada orientatsiooni @media
päringuid. Näiteks, vmin
ja vmax
võib olla mugav, kui teil on elemente, mis võivad tunduda kummalised erineva kuvasuhtega.
Uuel koodil on suurepärane juhendaja, kus nad arutavad, kuidas saate hoida kangelase teksti loetavana igal ekraanil, kasutades vmin
üksus. Kangelase tekstid on altid vaatama liiga väikesed ja suured monitorid liiga suured.
Siin on nende lahenduse peamine idee:
h1 font-size: 20vmin; font-pere: Avenir, sans-serif; font-kaal: 900; teksti joondamine: keskus;
Codepeni demos saate vaadata, kuidas vmin
lahendab kangelaste tekstide loetavuse probleemi. Juurdepääs “Täielik lehekülg” vaade Codepenist muutke brauseri akna suurust nii horisontaalselt kui ka vertikaalselt, et näha, kuidas kangelase tekst muutub.
Brauseri tugi
Nagu näete allpool toodud CanIUse'i tabelis, brauseri tugi on suhteliselt hea vaatepordi üksuste jaoks. Kuid pidage meeles, et mõned IE ja Edge versioonid ei toeta vmax
. Samuti on iOS 6 ja 7 probleemiga vh
üksus, mis kinnitati iOS 8-s.