Kotisivu » Coding » Opas CSS Viewport -yksiköihin vw, vh, vmin, vmax

    Opas CSS Viewport -yksiköihin vw, vh, vmin, vmax

    Viewport-prosenttipituudet, tai viewport-yksiköt kuten ne ovat yleisempiä, ovat reagoivia CSS-yksiköitä, joiden avulla voit määrittää mittoja prosenttiosuutena näkymäportin leveydestä tai pituudesta. Viewport-yksiköt voivat olla varsin hyödyllisiä tapauksissa, joissa muut reagoivat CSS-yksiköt, kuten prosenttiosuudet, ovat vaikea tehdä työtä.

    Siitä huolimatta W3C: n dokumentaatio viewport-yksiköissä on kaikkea, mitä voidaan teoriassa käyttää, se ei ole kovin verbose. Joten tässä artikkelissa tarkastellaan, miten nämä CSS-yksiköt toimivat käytännössä.

    Viewportin korkeus (vh) & viewport-leveys (VW)

    W3C määrittelee näkymäportin kuten “alkuperäisen sisältävän lohkon koko”. Toisin sanoen, viewport on alue sisältyvät selainikkunaan tai jokin muu näyttöalueen katselualue.

    VW ja vh yksiköt seisoo todellisen katseluportin leveyden ja korkeuden prosenttiosuus. Ne voivat ottaa arvoa välillä 0 - 100 seuraavien sääntöjen mukaisesti:

     100vw = 100% katselualueen leveydestä 1vw = 1% katseluportin leveydestä 100vh = 100% näkymänportin korkeudesta 1vh = 1% näkymänportin korkeudesta 
    Erot prosenttiyksiköihin

    Miten katseluportin yksiköt eroavat prosenttiyksiköistä? Prosenttiyksiköt periä vanhemman elementin koko katseluportin yksiköt eivät. Viewport-yksiköt lasketaan aina prosenttiosuus katseluportin koosta. Tämän seurauksena viewport-yksiköiden määrittämä elementti voi ylittää sen vanhemman koon.

    Esimerkki: Koko näytön osat

    Koko näytön osat ovat luultavasti yleisimmin tunnettuja viewport-yksiköiden käyttötapoja.

    HTML on melko yksinkertainen; meillä on vain kolme osaa toisistaan ja haluamme, että jokainen niistä peittää koko näytön (mutta ei enempää).

      

    Käytämme CSS: ssä 100vh kuten a korkeus arvo ja 100% kuten leveys. Emme käytä VW tässä oletusarvoisesti, lisätään myös vierityspalkit näkymän koko. Joten, jos käytimme leveys: 100vw; sääntö a vaakasuuntainen vierityspalkki näkyisi selainikkunan alareunassa.

     * marginaali: 0; pehmuste: 0;  osio taustakoko: kansi; tausta-asema: keskus; leveys: 100%; korkeus: 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');  

    Alla olevasta gif-demosta näet sen vh on todella reagoiva yksikkö.

    Edellä mainittujen W3C-asiakirjojen mukaan vaakasuuntainen vierityspalkin ongelma voidaan ratkaista lisäämällä ylivuoto: auto; sääntö juurielementtiin. Tämä ratkaisu toimii vain osittain, vaikka. Vaakasuuntainen vierityspalkki häviää, mutta leveys on lasketaan edelleen katseluportin leveyden perusteella (sivupalkki mukana), joten elementit ovat hieman suurempia kuin niiden pitäisi olla.

    Sanoisin, etten uskalla käyttää sitä VW yksikön päälle koko näytön elementtien kokoaminen tästä syystä. Emme edes tarvitse sitä, kuten leveys: 100%; sääntö toimii täydellisesti. Koko näytön asetteluilla todellinen haaste on aina ollut miten aseta oikea korkeusarvo ja vh yksikkö antaa sille loistavan ratkaisun.

    Muut käyttötapaukset

    Jos olet kiinnostunut muut käyttötapaukset VW ja vh Lullabotilla on loistava artikkeli, jossa luetellaan a kourallinen todellisia esimerkkejä (Codepen-demojen kanssa), kuten:

    • Kiinteän suhteen kortit.
    • Pidä elementti lyhyempi kuin näyttö.
    • Skaalauksen teksti.
    • Säiliöstä irtoaminen.

    Opera.devilla on myös lyhyt opetusohjelma siitä, miten voit hyödyntää VW yksikkö vuonna luodaan reagoiva typografia.

    Et voi käyttää vain viewport-yksiköitä leveys ja korkeus ominaisuuksia, mutta millä tahansa muulla. Esimerkiksi voit määritä tarhojen ja reunojen koko käyttämällä VW ja vh myös yksiköitä.

    Viewport min (Vmin) & viewport max (vmax)

    Vmin ja vmax yksiköiden avulla voit käyttää pienemmän tai suuremman sivun koko näkymän portin seuraavien sääntöjen mukaisesti:

     100vmin = 100vw tai 100vh, kumpi on pienempi 1vmin = 1vw tai 1vh, kumpi on pienempi 100vmax = 100vw tai 100vh, kumpi on suurempi 1vmax = 1vw tai 1vh, kumpi on suurempi 

    Joten jos kyseessä on a pystysuuntaan, 100vmin on yhtä suuri kuin 100vw, koska katseluportti on pienempi kuin pystysuunnassa. Samasta syystä, 100vmax on yhtä suuri kuin 100vh.

    Samoin a maiseman suunta, 100vmin on yhtä suuri kuin 100vh, koska katseluportti on pienempi pystysuunnassa kuin vaakasuunnassa. Ja tietenkin, 100vmax on yhtä suuri kuin 100vw tässä.

    Esimerkki: Tee hero-tekstit luettaviksi jokaisella näytöllä

    Vmin ja vmax yksiköt ovat paljon vähemmän tunnettuja kuin VW ja vh. Niitä voidaan kuitenkin käyttää erinomaisesti a sijainen @media kyselyt. Esimerkiksi, Vmin ja vmax voi olla kätevä, kun sinulla on elementtejä, jotka saattavat näyttää outoilta eri kuvasuhteissa.

    Uudessa koodissa on hyvä opetusohjelma, jossa he keskustelevat siitä, miten voit pidä sankarin tekstiä luettavissa jokaiseen näyttöön Vmin yksikkö. Hero-tekstit ovat altis näyttää liian pieni liikkuvilla ja liian suurilla näytöillä.

    Tässä on niiden ratkaisun pääajatus:

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

    Codepen-demossa voit tarkistaa, miten Vmin ratkaisee sankaritekstien luettavuusongelman. Siirry “Täysi sivu” sitten Codepenissä kokoa selainikkunasi sekä vaakasuunnassa että pystysuunnassa, miten sankarin teksti muuttuu.

    Selaimen tuki

    Kuten näet alla olevassa CanIUse-taulukossa, selaimen tuki on suhteellisen hyvä viewport-yksiköille. Muista kuitenkin, että tietyt IE- ja Edge-versiot eivät tue vmax. Myös iOS 6: lla ja 7: llä on ongelma vh yksikkö, joka vahvistettiin iOS 8: ssa.