Suomi

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

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.

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:

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ä.