Ota haltuun CSS-näkymäyksiköt (vw, vh, vmin, vmax, vi, vb) ja luo responsiivisia web-asetteluja, jotka mukautuvat saumattomasti joka laitteeseen. Opi käytännön sovelluksia ja parhaita käytäntöjä.
CSS-näkymäyksiköiden hallinta: Kattava opas responsiiviseen suunnitteluun
Jatkuvasti kehittyvässä web-kehityksen maailmassa on ensisijaisen tärkeää luoda responsiivisia suunnitelmia, jotka mukautuvat saumattomasti eri näyttökokoihin. CSS-näkymäyksiköt (vw
, vh
, vmin
, vmax
, vi
ja vb
) tarjoavat tehokkaan tavan saavuttaa tämä, mahdollistaen joustavan ja skaalautuvan lähestymistavan elementtien koon määrittämiseen suhteessa näkymään. Tämä kattava opas syventyy näkymäyksiköiden yksityiskohtiin, tutkien niiden toiminnallisuutta, käytännön sovelluksia ja parhaita toteutuskäytäntöjä.
Näkymäyksiköiden ymmärtäminen
Näkymäyksiköt ovat CSS:n suhteellisia pituusyksiköitä, jotka perustuvat selaimen näkymän kokoon. Toisin kuin kiinteät yksiköt, kuten pikselit (px
), jotka pysyvät vakiona näytön koosta riippumatta, näkymäyksiköt säätävät arvojaan dynaamisesti näkymän mittojen mukaan. Tämä mukautuvuus tekee niistä ihanteellisia joustavien ja responsiivisten asettelujen luomiseen, jotka näyttävät hyvältä millä tahansa laitteella, älypuhelimista suuriin pöytätietokoneiden näyttöihin. Keskeinen etu on, että näkymäyksiköillä rakennetut suunnitelmat skaalautuvat harmonisesti säilyttäen mittasuhteet ja visuaalisen ilmeen eri näyttötarkkuuksilla.
Keskeiset näkymäyksiköt: vw, vh, vmin, vmax
vw
(Viewport Width): Vastaa 1 % näkymän leveydestä. Esimerkiksi10vw
on yhtä kuin 10 % näkymän leveydestä.vh
(Viewport Height): Vastaa 1 % näkymän korkeudesta. Vastaavasti50vh
on yhtä kuin 50 % näkymän korkeudesta.vmin
(Viewport Minimum): Vastaa pienempää arvoavw
:n javh
:n välillä. Jos näkymä on leveämpi kuin se on korkea,vmin
on yhtä kuinvh
. Vastaavasti, jos näkymä on korkeampi kuin se on leveä,vmin
on yhtä kuinvw
. Tämä on hyödyllistä mittasuhteiden säilyttämisessä, erityisesti neliönmuotoisissa tai lähes neliönmuotoisissa elementeissä.vmax
(Viewport Maximum): Vastaa suurempaa arvoavw
:n javh
:n välillä. Jos näkymä on leveämpi kuin se on korkea,vmax
on yhtä kuinvw
. Jos näkymä on korkeampi kuin se on leveä,vmax
on yhtä kuinvh
. Tätä käytetään usein, kun halutaan elementin täyttävän näkymän suurimman mahdollisen ulottuvuuden.
Loogiset näkymäyksiköt: vi, vb
Uudemmat loogiset näkymäyksiköt, vi
ja vb
, ovat suhteessa näkymän *inline*- ja *block*-mittoihin. Nämä yksiköt reagoivat dokumentin kirjoitustilaan ja tekstin suuntaan, mikä tekee niistä erityisen hyödyllisiä kansainvälistetyillä verkkosivustoilla. Tämä mahdollistaa asettelut, jotka ovat luonnostaan mukautuvia eri kirjoitusjärjestelmiin.
vi
(Viewport Inline): Vastaa 1 % näkymän inline-koosta, joka on suunta, johon sisältö virtaa vaakasuunnassa (esim. vasemmalta oikealle useimmissa länsimaisissa kielissä). Vasemmalta oikealle -kirjoitustilassavi
käyttäytyy samankaltaisesti kuinvw
. Kuitenkin oikealta vasemmalle -kirjoitustilassa (kuten arabiassa tai hepreassa),vi
edustaa edelleen vaakasuuntaista ulottuvuutta, mutta alkaa näkymän oikeasta reunasta.vb
(Viewport Block): Vastaa 1 % näkymän block-koosta, joka on suunta, johon sisältö virtaa pystysuunnassa. Tämä vastaavh
:ta useimmissa yleisissä kirjoitustiloissa.
Esimerkki: Tarkastellaan verkkosivustoa, joka on suunniteltu sekä englannin (vasemmalta oikealle) että arabian (oikealta vasemmalle) kielille. Käyttämällä vi
-yksikköä säiliön sivuilla oleviin täytteisiin tai marginaaleihin, ne säätyvät automaattisesti oikealle puolelle kielisuunnan perusteella, mikä takaa yhtenäisen välityksen käyttäjän kielivalinnasta riippumatta.
Näkymäyksiköiden käytännön sovellukset
Näkymäyksiköitä voidaan käyttää monissa eri tilanteissa responsiivisten ja visuaalisesti miellyttävien web-asettelujen luomiseen. Tässä on joitakin yleisiä käyttötapauksia:
1. Koko korkeuden osiot
Koko näkymän kattavien, koko korkeuden osioiden luominen on yleinen suunnittelumalli. Näkymäyksiköt tekevät tästä uskomattoman helppoa:
.full-height-section {
height: 100vh;
width: 100vw; /* Varmistaa, että se täyttää myös koko leveyden */
}
Tämä koodinpätkä varmistaa, että .full-height-section
-elementti vie aina koko näkymän korkeuden näytön koosta riippumatta. width: 100vw;
varmistaa, että elementti täyttää myös koko leveyden, luoden todella koko näkymän kattavan osion.
2. Responsiivinen typografia
Näkymäyksiköitä voidaan käyttää responsiivisen typografian luomiseen, joka skaalautuu suhteessa näkymän kokoon. Tämä varmistaa, että teksti pysyy luettavana ja visuaalisesti miellyttävänä kaikilla laitteilla.
h1 {
font-size: 8vw; /* Fontin koko skaalautuu näkymän leveyden mukaan */
}
p {
font-size: 2vh; /* Fontin koko skaalautuu näkymän korkeuden mukaan */
}
Tässä esimerkissä h1
-elementin font-size
on asetettu arvoon 8vw
, mikä tarkoittaa, että se on 8 % näkymän leveydestä. Kun näkymän leveys muuttuu, fontin koko säätyy vastaavasti. Samoin p
-elementin font-size
on asetettu arvoon 2vh
, joka skaalautuu näkymän korkeuden mukaan.
3. Kuvasuhdelaatikot
Kuvien ja videoiden kuvasuhteiden ylläpitäminen voi olla hankalaa, mutta näkymäyksiköt yhdistettynä padding-top
-kikkaan tarjoavat yksinkertaisen ratkaisun:
.aspect-ratio-box {
width: 100%;
position: relative;
}
.aspect-ratio-box::before {
content: "";
display: block;
padding-top: 56.25%; /* 16:9 kuvasuhde (korkeus/leveys * 100) */
}
.aspect-ratio-box > * {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
Tämä tekniikka käyttää pseudo-elementtiä (::before
), jonka padding-top
-arvo on laskettu halutun kuvasuhteen (tässä tapauksessa 16:9) perusteella. .aspect-ratio-box
-laatikon sisältö sijoitetaan sitten absoluuttisesti täyttämään käytettävissä oleva tila, säilyttäen kuvasuhteen näytön koosta riippumatta. Tämä on erittäin hyödyllistä upotettaessa videoita tai kuvia, joiden on säilytettävä mittasuhteensa.
4. Joustavien ruudukkoasettelujen luominen
Näkymäyksiköillä voidaan luoda joustavia ruudukkoasetteluja, joissa sarakkeet ja rivit mukautuvat suhteessa näkymän kokoon. Tämä voi olla erityisen hyödyllistä luotaessa kojelautoja ja muita monimutkaisia asetteluja.
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(20vw, 1fr)); /* Jokainen sarake on vähintään 20 % näkymän leveydestä */
grid-gap: 1vw;
}
.grid-item {
padding: 1vw;
background-color: #f0f0f0;
}
Tässä grid-template-columns
-ominaisuus käyttää minmax(20vw, 1fr)
-arvoa varmistaakseen, että jokainen sarake on vähintään 20 % näkymän leveydestä, mutta voi kasvaa täyttämään käytettävissä olevan tilan. grid-gap
on myös asetettu käyttämällä 1vw
:tä, mikä varmistaa, että ruudukon kohteiden välinen tila skaalautuu suhteessa näkymän kokoon.
5. Responsiivinen välitys ja täytteet
Välityksen ja täytteiden hallinta näkymäyksiköillä tarjoaa yhtenäisen visuaalisen harmonian eri laitteilla. Se varmistaa, että elementit eivät näytä liian ahtailta tai liian hajallaan, riippumatta näytön koosta.
.container {
padding: 5vw;
margin-bottom: 3vh;
}
Tässä esimerkissä .container
-elementillä on täyte, joka on 5 % näkymän leveydestä kaikilla sivuilla, ja alamarginaali, joka on 3 % näkymän korkeudesta.
6. Skaalautuvat käyttöliittymäelementit
Painikkeista, syöttökentistä ja muista käyttöliittymäelementeistä voidaan tehdä responsiivisempia mitoittamalla ne näkymäyksiköillä. Tämä mahdollistaa käyttöliittymäkomponenttien suhteellisten mittasuhteiden säilyttämisen, mikä parantaa käyttökokemusta eri näytöillä.
.button {
font-size: 2.5vh;
padding: 1vh 2vw;
border-radius: 0.5vh;
}
.button
-luokka on määritelty fonttikoolla, joka perustuu näkymän korkeuteen (2.5vh
), ja täytteellä, joka perustuu sekä näkymän korkeuteen että leveyteen. Tämä varmistaa, että painikkeen teksti pysyy luettavana ja painikkeen koko mukautuu sopivasti eri näyttöjen mittojen mukaan.
Parhaat käytännöt näkymäyksiköiden käyttöön
Vaikka näkymäyksiköt tarjoavat tehokkaan tavan luoda responsiivisia suunnitelmia, on tärkeää käyttää niitä harkitusti ja noudattaa parhaita käytäntöjä mahdollisten sudenkuoppien välttämiseksi:
1. Harkitse minimi- ja maksimiarvoja
Näkymäyksiköt voivat joskus johtaa äärimmäisiin arvoihin hyvin pienillä tai hyvin suurilla näytöillä. Tämän estämiseksi harkitse min()
-, max()
- ja clamp()
-CSS-funktioiden käyttöä asettaaksesi minimi- ja maksimirajat näkymäyksiköiden arvoille.
h1 {
font-size: clamp(2rem, 8vw, 5rem); /* Fontin koko on vähintään 2rem, enintään 5rem, ja skaalautuu välissä näkymän leveyden mukaan */
}
clamp()
-funktio ottaa kolme argumenttia: minimiarvon, halutun arvon ja maksimiarvon. Tässä esimerkissä font-size
on vähintään 2rem
, enintään 5rem
, ja se skaalautuu suhteessa näkymän leveyteen (8vw
) näiden rajojen välillä. Tämä estää tekstin muuttumasta liian pieneksi pienillä näytöillä tai liian suureksi suurilla näytöillä.
2. Yhdistä muihin yksiköihin
Näkymäyksiköt toimivat parhaiten, kun ne yhdistetään muihin CSS-yksiköihin, kuten em
, rem
ja px
. Tämä mahdollistaa vivahteikkaamman ja joustavamman suunnittelun, joka ottaa huomioon sekä näkymän koon että sisällön kontekstin.
p {
font-size: calc(1rem + 0.5vw); /* Perusfonttikoko 1rem plus skaalauskerroin */
line-height: 1.6;
}
Tässä esimerkissä font-size
lasketaan calc()
-funktion avulla, joka lisää perusfonttikokoon 1rem
skaalauskertoimen 0.5vw
. Tämä varmistaa, että teksti on aina luettavissa, jopa pienillä näytöillä, samalla kun se skaalautuu suhteessa näkymän kokoon.
3. Testaa eri laitteilla ja selaimilla
Kuten minkä tahansa web-kehitystekniikan kohdalla, on ratkaisevan tärkeää testata suunnitelmasi monilla eri laitteilla ja selaimilla varmistaaksesi selainyhteensopivuuden ja optimaalisen suorituskyvyn. Käytä selaimen kehittäjätyökaluja simuloidaksesi eri näyttökokoja ja resoluutioita, ja testaa suunnitelmiasi oikeilla fyysisillä laitteilla aina kun mahdollista. Vaikka tuki on yleisesti hyvä, selaimien välillä voi esiintyä hienovaraisia eroja.
4. Huomioi saavutettavuus
Kun käytät näkymäyksiköitä typografiassa, varmista, että teksti pysyy luettavana ja saavutettavana myös vammaisille käyttäjille. Kiinnitä huomiota värikontrastiin, fontin kokoon ja riviväliin varmistaaksesi, että teksti on helppolukuista kaikille käyttäjille. Työkalut, kuten WebAIM-kontrastintarkistin, voivat auttaa määrittämään sopivat värikontrastisuhteet. Vältä myös asettamasta `font-size`-ominaisuutta tai muita kokoihin liittyviä ominaisuuksia suoraan `html`-elementille näkymäyksiköillä, koska se voi häiritä käyttäjän tekstin koon mukautusasetuksia.
5. Käytä CSS-muuttujien (Custom Properties) kanssa
CSS-muuttujien (custom properties) käyttäminen näkymäyksiköiden kanssa parantaa ylläpidettävyyttä ja mahdollistaa helpommat säädöt koko tyylisivulla.
:root {
--base-padding: 2vw;
}
.element {
padding: var(--base-padding);
}
.another-element {
margin-left: var(--base-padding);
}
Tässä esimerkissä --base-padding
-muuttuja on määritelty arvolla 2vw
. Tätä muuttujaa käytetään sitten asettamaan eri elementtien täytteet ja marginaalit, mikä mahdollistaa välityksen helpon säätämisen koko verkkosivustolla muuttamalla muuttujan arvoa yhdessä paikassa.
Edistyneet tekniikat ja huomiot
1. JavaScriptin käyttö dynaamisiin säätöihin
Tietyissä tilanteissa saatat joutua säätämään näkymäyksiköiden arvoja dynaamisesti käyttäjän vuorovaikutuksen tai muiden tapahtumien perusteella. JavaScriptin avulla voidaan käyttää näkymän mittoja ja päivittää CSS-muuttujia vastaavasti.
// JavaScript
function updateViewportVariables() {
const vh = window.innerHeight * 0.01;
document.documentElement.style.setProperty('--vh', `${vh}px`);
}
window.addEventListener('resize', updateViewportVariables);
updateViewportVariables(); // Ensimmäinen kutsu
// CSS
.element {
height: calc(var(--vh, 1vh) * 50); /* Varamenetelmä 1vh, jos --vh ei ole määritelty */
}
Tämä koodinpätkä käyttää JavaScriptiä laskeakseen näkymän korkeuden ja asettaakseen CSS-muuttujan (--vh
) vastaavasti. .element
käyttää sitten tätä muuttujaa asettaakseen korkeutensa, varmistaen, että se vie aina 50 % näkymän korkeudesta. Varamenetelmä 1vh
varmistaa, että elementillä on edelleen kohtuullinen korkeus, vaikka CSS-muuttujaa ei olisi asetettu oikein.
2. Mobiilinäppäimistön näkyvyyden käsittely
Mobiililaitteilla näkymän koko voi muuttua, kun virtuaalinäppäimistö tulee näkyviin. Tämä voi aiheuttaa ongelmia asetteluissa, jotka käyttävät näkymäyksiköitä koko korkeuden osioissa. Yksi tapa lieventää tätä on käyttää suuria, pieniä ja dynaamisia näkymäyksiköitä, jotka antavat kehittäjille mahdollisuuden määrittää käyttäytymisen näissä tilanteissa. Nämä ovat saatavilla lvh
-, svh
- ja dvh
-yksiköillä. dvh
-yksikkö mukautuu, kun virtuaalinäppäimistö tulee näkyviin. Huomaa, että tuki voi olla rajoitettu joissakin vanhemmissa selaimissa.
.full-height-section {
height: 100dvh;
}
3. Suorituskyvyn optimointi
Vaikka näkymäyksiköt ovat yleensä suorituskykyisiä, niiden liiallinen käyttö voi mahdollisesti vaikuttaa sivun renderöintinopeuteen. Suorituskyvyn optimoimiseksi vältä näkymäyksiköiden käyttöä jokaisessa sivun elementissä. Sen sijaan keskity käyttämään niitä strategisesti keskeisissä asettelukomponenteissa ja typografiassa. Minimoi myös JavaScriptissä tapahtuvien näkymäyksiköiden arvojen uudelleenlaskentojen määrä.
Esimerkkejä eri maista ja kulttuureista
Näkymäyksiköiden hienous on siinä, että ne auttavat luomaan yhtenäisen käyttökokemuksen eri paikoissa. Tarkastellaan, miten näkymäyksiköitä voidaan soveltaa kulttuuriset näkökohdat huomioiden:
- Itä-Aasian kielet (esim. kiina, japani, korea): Nämä kielet vaativat usein suurempia fonttikokoja merkkien monimutkaisuuden vuoksi. Näkymäyksiköt varmistavat luettavuuden mobiililaitteilla, joissa näyttötilaa on rajoitetusti. `clamp()`-funktion käyttö korkeammalla minimifonttikoolla, joka perustuu `rem`-yksiköihin `vw`:n rinnalla, voi olla erityisen hyödyllistä.
- Oikealta vasemmalle -kielet (esim. arabia, heprea): Loogiset näkymäyksiköt (`vi`, `vb`) ovat korvaamattomia yhtenäisen asettelun suunnan ja välityksen ylläpitämisessä, erityisesti käsiteltäessä peilattuja asetteluja ja mukautettua sisällön virtausta.
- Maat, joissa on vaihtelevat internetyhteydet: Kuvakokojen optimointi ja nopeiden latausaikojen varmistaminen on ratkaisevan tärkeää. Näkymäyksiköillä luodut kuvasuhdelaatikot mahdollistavat kuvien ja videoiden mittasuhteiden säilyttämisen samalla kun ne mukautuvat pienempiin tiedostokokoihin nopeampaa latausta varten hitaammilla yhteyksillä.
- Saavutettavuus yli kulttuurirajojen: `rem`-yksikön käyttö perusfonttikokona ja `vw`:n käyttö skaalauksessa tarjoaa käyttäjille joustavuutta ohittaa mitoitus omien tarpeidensa mukaan, riippumatta heidän maantieteellisestä sijainnistaan tai kulttuurisesta taustastaan. Mahdollisuuksien tarjoaminen käyttäjille fonttikokojen säätämiseen on yleisesti hyödyllistä.
Yhteenveto
CSS-näkymäyksiköt ovat välttämätön työkalu aidosti responsiivisten ja skaalautuvien verkkosuunnitelmien luomiseen, jotka mukautuvat saumattomasti mihin tahansa laitteeseen. Ymmärtämällä vw
:n, vh
:n, vmin
:n, vmax
:n, vi
:n ja vb
:n toiminnallisuuden ja noudattamalla parhaita käytäntöjä, voit vapauttaa näkymäyksiköiden täyden potentiaalin ja luoda visuaalisesti miellyttäviä ja käyttäjäystävällisiä verkkosivustoja, jotka tarjoavat yhtenäisen kokemuksen kaikilla alustoilla. Ota nämä yksiköt käyttöön rakentaaksesi verkkokokemuksia, jotka ovat maailmanlaajuisesti saavutettavia ja esteettisesti miellyttäviä, riippumatta käyttäjän laitteesta tai kulttuurisesta taustasta.
Muista testata huolellisesti eri selaimilla ja laitteilla ja asettaa saavutettavuus aina etusijalle varmistaaksesi, että suunnitelmasi ovat osallistavia ja kaikkien käytettävissä.