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 valitsimet
CSS-valitsin (engl. selector) määrittää, mihin HTML-elementteihin tyylisääntö kohdistuu. Valitsimien avulla voit muuttaa esimerkiksi värejä, fontteja tai asettelua vain tietyille elementeille, HTML-luokille tai tilanteille (esim. hiiri päällä) HTML-dokumentissa.
Oppaan edeltävissä osissa on tähän asti käytetty pääosin yksinkertaisia tyyppivalitsimia, jotka kohdistuvat suoraan HTML-elementin nimeen (kuten body, p tai h1). Jotta CSS:stä saisi parhaan hyödyn irti, on tärkeää oppia käyttämään myös tarkempia valitsimia, kuten luokka-, ID- ja attribuuttivalitsimia.
Valitsinten syntaksi
Seuraavassa taulukossa esitellään yleisimmät valitsimet, jotka kuuluvat CSS1- ja CSS2-spesifikaatioihin. Sitten käymme läpi jokaisen valitsintyypin esimerkkien avulla.
Syntaksi | Tyyppi | Kuvaus |
---|---|---|
* | Universaali valitsin | Tyylisääntö kohdistuu kaikkiin elementteihin |
E | Tyyppivalitsin | Tyylisääntö kohdistuu elementtiin E |
E F | Jälkeläisvalitsin | Tyylisääntö kohdistuu kaikkiin elementteihin F, jotka ovat elementin E jälkeläisiä (sisällä) |
E>F | Lapsivalitsin | Tyylisääntö kohdistuu kaikkiin elementteihin F, joiden vanhempana on elementti E |
E,F | Ryhmittäjä | Tyylisääntö kohdistuu elementteihin E ja F |
E+F | Sisarusvalitsin | Tyylisääntö kohdistuu kaikkiin elementteihin F, joita edeltää elementti E |
E.a | Luokkavalitsin | Tyylisääntö kohdistuu kaikkiin elementteihin E, joiden class-attribuutilla on arvo a |
E#a | ID-valitsin | Tyylisääntö kohdistuu elementtiin E, jonka id-attribuutilla on arvo a |
E[a] | Attribuuttivalitsin | Tyylisääntö kohdistuu kaikkiin elementteihin E, joilla on attribuutti a (attribuutin nimestä ja arvosta riippumatta) |
E[a="b"] | Attribuuttivalitsin | Tyylisääntö kohdistuu kaikkiin elementteihin E, joilla on attribuutti a ja attribuutin arvo on yhtä kuin b |
E[a~="b"] | Attribuuttivalitsin | Tyylisääntö kohdistuu kaikkiin elementteihin E, joilla on attribuutti a (välilyönnillä erotettu arvojoukko) ja attribuutin arvo on yhtä kuin b. |
E[a|="b"] | Attribuuttivalitsin | Tyylisääntö kohdistuu kaikkiin elementteihin E, joilla on attribuutti a ja arvojoukko alkaa merkkijonolla b |
E::after | Pseudoelementti | Elementtiä E seuraa sisältö, joka ilmoitetaan ominaisuudella content. |
E::before | Pseudoelementti | Elementtiä E edeltää sisältö, joka ilmoitetaan ominaisuudella content. |
E::first-letter | Pseudoelementti | Tyylisääntö kohdistuu elementin E ensimmäiseen kirjaimeen |
E::first-line | Pseudoelementti | Tyylisääntö kohdistuu elementin E ensimmäiseen riviin |
E:first-child | Pseudoluokka | Tyylisääntö kohdistuu elementin E ensimmäiseen jälkeläiseen (elementin sisällä) |
E:link | Pseudoluokka | Tyylisääntö kohdistuu kaikkiin elementteihin E, jotka ovat vierailemattomia linkkejä. Vain a-elementti |
E:visited | Pseudoluokka | Tyylisääntö kohdistuu kaikkiin elementteihin E, jotka ovat vierailtuja linkkejä. Vain a-elementti |
E:lang(a) | Pseudoluokka | Tyylisääntö kohdistuu kaikkiin elementteihin E, joilla lang-attribuutin arvo on a |
E:focus | Dynaaminen pseudoluokka | Tyylisääntö kohdistuu kaikkiin elementteihin E, joilla on fokus (esim. lomakekenttä) |
E:hover | Dynaaminen pseudoluokka | Tyylisääntö kohdistuu kaikkiin elementteihin E, joiden päällä hiiri on. |
E:active | Dynaaminen pseudoluokka | Tyylisääntö kohdistuu kaikkiin elementteihin E, jotka ovat aktiivisia (esim. maalattu hiirellä) |
Uudemmat CSS3- ja CSS4-määrittelyt tarjoavat useita uusia valitsimia kuten :nth-child()
, :not()
, :has()
ja :is()
.
Universaali valitsin
Universaali valitsin kohdistaa tyylisäännöt kaikkiin HTML-dokumentin elementteihin.
Se merkitään *
merkinnällä, jota seuraa normaali määrittelylohko.
Universaali valitsin toimii ikään kuin "kaikki elementit" -sääntönä.
Alla olevassa esimerkissä universaalin valitsin asettaa oletusfontin kaikille elementeille.
* {
font-family: Verdana;
}
Universaali valitsin vaikuttaa kaikkiin elementteihin, mutta tarkemmat valitsimet voivat ylikirjoittaa sen avulla asetetut tyylit CSS:n cascade- ja periytymissääntöjen mukaisesti.
* {
font-family: Verdana;
}
h1 {
font-family: serif;
}
Universaali valitsin voidaan yhdistää muihin CSS-valitsimiin, jolloin tyylit kohdistuvat tarkemmin. Esimerkiksi seuraava sääntö kohdistaa tyylin kaikkiin div-elementin sisällä oleviin elementteihin:
div * {
font-family: serif;
}
Tyyppivalitsin ja ryhmittelyvalitsin
Tyyppivalitsin kohdistaa tyylisäännön kaikkiin tietyn HTML-elementin esiintymiin dokumentissa. Esimerkiksi h2-valitsin kohdistuu kaikkiin toisen tason otsikoihin.
Ryhmittelyvalitsin mahdollistaa saman tyylin määrittämisen useille eri elementeille kerralla. Elementit erotetaan pilkulla.
Alla olevassa esimerkissä h2
-valitsin asettaa mustan tekstivärin kaikille h2-elementeille.
Ryhmittelyvalitsin h1, h3, h4
asettaa sinisen värin kaikille näille otsikkotasoille.
h2 {
color:black;
}
h1,h3,h4 {
color:blue;
}
ID-attribuuttivalitsin
ID-valitsin (engl. ID selector) kohdistaa tyylin HTML-elementtiin, jolla on tietty id-attribuutin arvo. On tärkeää huomata, että koska ID on tarkoitettu yksilölliseksi tunnisteeksi, samaa ID-arvoa voi käyttää vain kerran verkkosivulla.
ID-valitsimelle on kaksi yleistä kirjoitustapaa:
- E#a
- Tyyli kohdistuu elementtiin E, jonka id-attribuutilla on arvo a
- #a
- Tyyli kohdistuu mihin tahansa elementtiin, jonka id-attribuutilla on arvo a
Jos kappale-elementillä on ID-arvo 'testi', sitä vastaava CSS-määrittely voisi olla seuraava:"
p#testi{
text-decoration:underline;
}
/* myös tämä olisi täysin oikein: */
#testi {
text-decoration:underline;
}
Class-attribuuttivalitsin
Class-valitsin (engl. class selector) kohdistaa tyylin kaikkiin HTML-elementteihin, joilla on sama class-attribuutin arvo. Class-valitsimen voi kirjoittaa kahdella tavalla:
- E.a
- Tyyli kohdistuu elementtiin E, jonka class-attribuutilla on arvo a
- .a
- Tyyli kohdistuu kaikkiin elementteihin, joiden class-attribuutilla on arvo a
Samaa class-arvoa voi käyttää useissa elementeissä, jolloin niihin saadaan sama tyyli.
Esimerkki:
...
p.romeo {color:red;}
p.julia {color:blue;}
/* vaihtoehtoisesti valitsimet voisi ilmaista myös näin: */
.romeo {color:red;}
.julia {color:blue;}
...
<p class="romeo">Romea sanoo jotain</p>
<p class="julia">...ja Julia vastaa</p>
<p class="romeo">Romea puhuu lisää</p>
<p class="romeo">...ja lisää</p>
Jälkeläis-, lapsi- ja sisarvalitsimet
Sijaintiin perustuvat CSS-valitsimet kohdistavat tyylinsä elementtien sijainnin perusteella. Valitsin aktivoituu vain, jos elementti on toisen elementin sisällä (jälkeläinen), sen suora lapsi (lapsivalitsin), tai seuraa sitä välittömästi samassa tasossa (sisarvalitsin).
Seuraavassa esimerkissä CSS:n avulla tyylitellään eri vuorosanojen puhujien dialogit:
....
/* perustyyli */
p {color: #0033FF; }
/* kaikki body-elementin sisässä olevat div-elementit, joilla on class-arvo vuorosanat */
body div.vuorosanat {background-color:#FFFF99; }
/* kaikki p-elementit, joilla on class romeo ja joiden vanhempana on div-elementti class-arvolla vuorosanat */
div.vuorosanat > p.romeo {border-color:red;border-style:solid;border-width:2px;}
/* kaikki julian vuorosanat, joita edeltää romeo */
p.romeo + p.julia {color:#33CC33;}
...
<p>Dialogia: </p>
<div class="vuorosanat">
<p class="romeo">Romea sanoo jotain </p>
<p class="julia">...ja Julia vastaa</p>
<p class="julia">ja Julia jatkaa.</p>
<p class="romeo">Romea puhuu lisää</p>
<p class="romeo">...ja lisää</p>
</div>
...
CSS:n pseudovalitsimet
CSS-tyylit kohdistuvat tavallisesti HTML-dokumentin elementteihin, jotka näkyvät dokumenttipuussa. Pseudovalitsimien (engl. pseudo-selectors tai pseudo-classes) avulla tyylit voidaan kohdistaa elementin tiloihin tai osiin, joita ei voi valita pelkän HTML-rakenteen perusteella.
Pseudovalitsimet mahdollistavat monipuolisemmat tyylimäärittelyt ilman HTML-rakenteen muutoksia.
Tyypillisiä pseudovalitsimien kohteita ovat esimerkiksi:
- Hyperlinkin tila ( ei-vierailtu/vierailtu)
- Käyttäjän vuorovaikutus elementin kanssa (esim. hiiri päällä, muu fokus, klikaus)
- Sisällön rakenneosat (ensimmäinen kirjain, ensimmäinen rivi)
- Suhde muihin elementteihin (ensimmäinen lapsielementti, viimeinen lapsielementti, n:s lapsielementti)
CSS:n pseudoluokat kohdistuvat elementin tilaan ja kirjoitetaan yhdellä kaksoispisteellä. Esimerkiksi a:hover
kohdistuu hyperlinkin tilaan.
Pseudolementit kohdistuvat elementin osiin, ja niiden eteen kirjoitetaan kaksi kaksoispistettä. Esimerkiksi p::before
. Huom! CSS:n vanhemmissa versioissa pseudoelementeissä käytettiin myös yhtä kaksoispistettä eroittimena.
Hyperlinkin tila - :link ja :visited pseudovalitsimet
Hyperlinkki (ankkuri) merkitään HTML-kielessä a
-elementin avulla.
Pseudovalitsimien avulla voidaan määrittää linkin ulkoasu eri tilanteissa, esimerkiksi sen mukaan, onko käyttäjä jo vieraillut linkissä.
- a:link
- Valitsin kohdistaa tyylin linkkeihin, joiden href-attribuutissa oleva osoite ei ole vielä avattu käyttäjän selaimessa.
- a:visited
- Valitsin kohdistaa tyylin linkkeihin, joiden href-attribuutissa oleva osoite on jo aiemmin avattu käyttäjän selaimessa.
Seuraavassa esimerkissä linkit esitetään ilman alleviivausta. Ei-vierailtuihin linkkeihin käytetään sinistä väriä, ja vierailtuihin linkkeihin punaista.
a {
text-decoration:none;
}
a:link {
color:blue;
}
a:visited {
color:red;
}
Käyttäjän vuorovaikutus elementin kanssa - :hover,:focus ja :active pseudovalitsimet
Käyttäjän vuorovaikutusta voidaan CSS:ssä tarkastella kolmen pseudovalitsimen avulla:
- E:hover
- Hiiri tai muu osoitin on elementin päällä.
- E:focus
- Elementillä on fokus (ts. siihen voidaan syöttää tekstiä); lähinnä lomakekentät.
- E:active
- Elementti on aktivoitunut, esim. käyttäjä on juuri klikannut sitä hiirellä tai vapauttanut painikkeen).
Alle olevassa esimerkissä linkin väri muuttuu ja siihen lisätään alleviivaus kun hiiri on hyperlinkin päällä. Vastaavasti syötekentän taustaväri vaihtuu, kun sillä on fokus. Lisäksi painikkeeseen lisätään sininen reunus, kun se on aktiivinen.
a:hover {
color:#CCFF99;text-decoration:underline;
}
input[type=text]:focus {
background-color:#CCFF99; padding:10px;
}
input[type=button]:active {
border:2px solid blue;
}
Sisällön rakenneosat - :first-line ja first-letter pseudovalitsimet
:first-letter
pseudovalitsimella voi kohdistaa tyylin elementin ensimmäiseen kirjaimeen.
Sitä käytetään esimerkiksi korostamaan kappaleen aloituskirjainta (anfang). Esimerkki:
p:first-letter {
font-size:2em;
}
Pseudovalitsimen first-line avulla voidaan kohdentaa tyyli elementin ensimmäiseen riviin. Ensimmäinen rivi määritellään selainikkunan (nk.viewport) perusteella. Esimerkki:
p.first-line{
text-transform:uppercase;
}
Suhde muihin elementteihin - ::before, ::after ja :first-child
::before ja ::after -pseudovalitsimilla voidaan lisätä dynaamista sisältöä elementin eteen tai taakse.
Lisättävä sisältö määritellään CSS-ominaisuudella content
.
Alla olevassa esimerkissä tulostusmediaa varten luodaan ylätunniste, joka lisätään dokumentin alkuun:
@media print {
body::before
{
content: "Copyright Koulutus- ja konsultointipalvelu KK mediat © 2025 \A
Aineiston kopioiminen ja hyödyntäminen henkilökohtaisen käytön ulkopuolella ilman lisenssiä on kielletty. ";
display: block;
margin-top: 2em;
text-align:left;
}
}
:first-child
-pseudovalitsimella tyylimäärittely kohdistuu jonkin elementin ensimmäiseen lapseen.
Esimerkiksi jos div-elementin ensimmäinen lapsi on p-elementti, siihen kohdistuu seuraava tyyli:
div > p:first-child {
text-indent: 10px;
}