CSS
CSS-TYYLEIHIN LIITTYVÄÄ KOULUTUSTA VUONNA 2025!
Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.
CSS:n @media-sääntö ja mediakyselyt(mediaqueryt)
@media-säännön avulla CSS-sääntöjä kohdistetaan esitysvälineelle, kuten näytölle tai tulostukseen.
@media-sääntö alkaa aina @media-avainsanalla, jota seuraa yksi tai useampi mediatyyppi (esim. screen, print) sekä mahdolliset mediakyselyt eli mediaqueryt. Seuraavassa lohkossa määritellään vain kyseiseen mediaan kohdennetut CSS-säännöt.
Alla olevassa esimerkissä näytöllä tapahtuvassa esityksen oletusfontti on isompi kuin tulostetussa versiossa. Lisäksi tulostetussa versiossa hyperlinkit esitetään alleviivattuina.
@media screen {
body {font: Verdana 1em; }
a {text-decoration:none;}
}
@media print {
body {font: Arial 0.8em; }
a {text-decoration:underline;}
}
Kaikki modernit selaimet tukevat @media-sääntöjä, mutta eri selainten tuki yksittäisille mediaominaisuuksille voi vaihdella.
Tuetut mediatyypit
Mahdolliset mediatyypin arvot ovat:
Mediatyyppi | Kuvaus |
---|---|
all | Kaikki mediat (oletusarvo, sama kuin @media attribuuttia ei määritellä) |
screen | Näyttölaitteet (esim. tietokoneet, mobiililaitteet) |
Paperitulosteet | |
speech | Puhesyntetisaattorit ja muut äänipohjaiset käyttöliittymät. |
embossed | Tulostus Braille-kirjoittimelle (pistekirjoituksena) |
projection | Esityslaitteet, kuten projektorit |
Osa vanhemmista mediatyypeistä, kuten aural
(nykyinen speech) on deprekoitu,
ja muut kuten braille
, tty
, television
ja handheld
ovat poistumassa.
Mediakyselyt ja responsiivinen web-suunnittelu
@media-sääntöjen todellinen voima tulee esiin mediakyselyjen (mediaqueries) avulla. Mediakyselyjen avulla tyylit kohdennetaan esimerkiksi selainikkunan leveyteen (nk.viewport), näytön kuvasuhteeseen tai käyttäjän järjestelmäasetuksiin. Tämä on keskeinen osa responsiivista web-suunnittelua (RWD), jossa yksi ja sama verkkosivu mukautuu eri päätelaitteille ilman erillisiä mobiili- tai desktop-versioita.
Responsiivinen suunnittelu toteutetaan usein mobile-first-periaatteella. Tällöin tyylit suunnitellaan ensin pienille näytöille ja ne sovitetaan suuremmille näytöille mediakyselyjen avulla:
/* Perustyyli, pienet laitteet */
body {
font-size: 1em;
}
/* Kun näytön leveys on vähintään 768px */
@media screen and (min-width: 768px) {
body {
font-size: 1.2em;
}
}
Responsiivisessa web-suunnittelussa käytetään usein seuraavia mediakyselyitä:
Ominaisuus | Esimerkki | Kuvaus |
---|---|---|
min-width | (min-width: 768px) | Vähimmäisleveys, jossa tyyli astuu voimaan. |
max-width | (max-width: 1024px) | Enimmäisleveys, jossa tyyli astuu voimaan. |
min-height | (min-height: 500px) | Vähimmäiskorkeus. |
max-height | (max-height: 900px) | Enimmäiskorkeus. |
orientation | (orientation: portrait) | Näytön suunta: portrait tai landscape. |
prefers-color-scheme | (prefers-color-scheme: dark) | Käyttäjän järjestelmäteema: light tai dark. |
Mediakyselyt voidaan yhdistää loogisilla operaattoreilla and
, or
ja not
.
Operaattorit mahdollistavat tyylien tarkemman kohdistamisen eri käyttötilanteisiin:
@media not screen { ... }
Breakpointit responsiivisessa web-suunnittelussa
Breakpoint eli katkokohta ohjaa mediakyselyn avulla sivun ulkoasun muutosta eri näyttöleveyksillä, esimerkiksi mobiilista tablettiin tai tietokoneeseen siirryttäessä.
Breakpointeissa hyödynnetään usein min-width
- ja max-width
-mediakyselyitä.
Tällä tavoin tyylejä kohdennetaan eri näyttöleveyksille.
Yleisimmin RWD:ssä käytetyt breakpoint-arvot ovat:
- 320px - Pienet puhelimet
- 480px - Suuremmat puhelimet
- 768px - Tabletit (pystytila)
- 1024px - Tabletit (vaakatila), pienet näytöt
- 1280px - Desktop
- 1440px - Suuret desktop-näytöt
- 1920px - Full HD -resoluutio
Nämä arvot eivät ole standardoituja, vaan ne perustuvat yleisiin laitemittoihin ja käytännön kokemukseen. Breakpointit kannattaa valita sen mukaan, miten oma sisältö käyttäytyy eri kokoisilla ruuduilla, ei pelkästään laitetilastojen perusteella.
/* Perustyylit jotka kaikki laitteet jakavat.
*/
/* isommat näytöt (tabletti, desktop): vaaka */
@media screen and (min-width: 768px) and (orientation: landscape) {
/* ... */
}
/* isommat näytöt (tabletti, desktop): pysty */
@media screen and (min-width: 768px) and (orientation: portrait) {
/* ... */
}
/* mobiili: pysty */
@media screen and (max-width: 767px) and (orientation: portrait) {
/* ... */
}
/* mobiili: vaakataso */
@media screen and (max-width: 767px) and (orientation: landscape) {
/* ... */
}
Meta viewport
Ilman HTML-lähdekoodissa määrättyä meta name="viewport"
-elementtiä selain käyttää verkkosivulle oletusleveyttä (yleensä noin 980px).
Tämä voi estää sivun oikeanlaisen skaalautumisen ja responsiivisten tyylien toiminnan.
Aseta meta viewport seuraavasti HTML-dokumentin head-osioon:
<meta name="viewport" content="width=device-width, initial-scale=1">