CSS (Cascading Style Sheets)

ITKP1011 Web-julkaiseminen · korjattu ja laajennettu laitos

Seuraavassa tarkastellaan CSS-tyylikielen käyttöä. Tarkemmin aiheesta voi lukea MDN:n artikkeleista Styling basics ja CSS reference sekä kurssisivuston CSS-dokumentaatiosta.

Oppimistavoitteet

Tämän luennon jälkeen sinun pitäisi osata:

Mitä tällä luennolla ei käsitellä

Sivun asettelu eli palstat, navigointivalikon sijoittelu ja elementtien järjestäminen käsitellään omalla luennollaan, samoin mediakyselyt ja tyylien kohdistaminen eri laitteille. Tällä luennolla opetellaan CSS:n perusteet: valitsimet, kaskadi, yksiköt, värit ja laatikkomalli.

1. Perusteet

Dokumentin rakenne määritellään HTML:n avulla ja ulkoasu CSS:n avulla. Jaosta seuraa useita etuja:

Sivut on testattava useammalla kuin yhdellä selaimella. Sekä HTML- että CSS-koodi kannattaa lisäksi tarkistaa validaattorilla:

2. Tyylitiedoston linkittäminen dokumenttiin

Tyylitiedosto (*.css) liitetään HTML-dokumenttiin link-elementillä head-elementin sisällä:

<link rel="stylesheet" href="tyylit.css" />

Attribuutti type="text/css" oli pakollinen vanhoissa dokumenttityypeissä. HTML5:ssä se on tarpeeton, ja sen voi jättää pois. Kirjoita rel-attribuutin arvo pienillä kirjaimilla.

Käytä tyylitiedostoon suhteellista osoitetta, jolloin sivusto toimii sellaisenaan myös omalla koneellasi:

<link rel="stylesheet" href="tyylit.css" />
<link rel="stylesheet" href="../tyylit.css" />
<link rel="stylesheet" href="/css/tyylit.css" />

Samaan dokumenttiin voi liittää useita tyylitiedostoja. Ne otetaan käyttöön siinä järjestyksessä, jossa ne on liitetty, joten myöhempi tiedosto voi ylikirjoittaa aiemman määrityksiä.

Tyylien kohdistaminen eri laitteille

link-elementin media-attribuutilla ja @media-säännöllä tyylejä voi kohdistaa esimerkiksi vain tulostukseen tai vain kapealle näytölle. Nämä käsitellään omalla luennollaan.

Vaihdettavat tyylitiedostot

Vanhoissa ohjeissa esitellään title-attribuutti ja rel="alternate stylesheet", joilla käyttäjä voisi vaihtaa sivuston ulkoasua selaimen valikosta. Vain Firefox on koskaan tukenut tätä kunnolla, eikä ominaisuutta käytännössä käytetä. Älä anna link-elementille title-attribuuttia: se tekee tyylistä vaihdettavan ja voi johtaa siihen, ettei tyyliä oteta käyttöön lainkaan.

2.1 style-elementti

Tyylejä voi lisätä yhteen dokumenttiin style-elementillä:

<head>
  <title>Esimerkki</title>
  <style>
    h1 { color: blue; background-color: yellow; }
  </style>
</head>

style-elementin käyttöä ei voi suositella, koska se rajaa vaikutuksen yhteen dokumenttiin. Sama onnistuu yhtä helposti ulkoisella tyylitiedostolla, joka toimii koko sivustolla.

Älä käytä style-elementtiä tällä kurssilla.

2.2 style-attribuutti

Tyylejä voi lisätä yhteen elementtiin style-attribuutilla:

<h1 style="color: blue; background-color: yellow;">Otsikko</h1>

style-attribuutin käyttöä ei voi suositella, koska se rajaa vaikutuksen yhteen elementtiin ja sekoittaa ulkoasun takaisin rakenteen sekaan. Sama onnistuu ulkoisella tyylitiedostolla ja luokalla.

Älä käytä style-attribuuttia tällä kurssilla.

2.3 Tyylien liittäminen toisesta tyylitiedostosta

@import-säännöllä voi liittää omaan tyylitiedostoon toisen tyylitiedoston sisällön. Näin yhteiset tyylit voi pitää yhdessä tiedostossa ja sivukohtaiset lisäykset toisessa.

@import "yhteiset.css";
@import url("varit.css");

Sääntöjen on oltava tiedoston ensimmäisinä riveinä, ennen mitään tyylisääntöä. Ainoa asia, joka saa olla ennen niitä, on @charset-sääntö.

Milloin @import ja milloin useampi link?

Selain löytää @import-säännön vasta ladattuaan ja luettuaan ensimmäisen tiedoston, joten tiedostot haetaan peräkkäin eikä rinnakkain. Useampi link-elementti on siksi nopeampi. Käytä @import-sääntöä silloin, kun haluat koota tyylit yhteen tiedostoon, etkä pysty muuttamaan HTML-dokumentteja.

3. Kaskadi: mikä sääntö voittaa?

CSS:n nimessä oleva sana cascading tarkoittaa sitä, että samaan elementtiin voi osua useita sääntöjä ja niiden ristiriidat ratkaistaan tietyssä järjestyksessä. Ratkaisu tehdään kolmessa vaiheessa, ja seuraavaan siirrytään vasta jos edellinen ei ratkaissut asiaa.

3.1 Vaihe 1: lähde ja tärkeys

Tyylien lähteet heikoimmasta vahvimpaan.
JärjestysLähde
1 (heikoin)Selaimen oletustyylit
2Käyttäjän omat tyylit, jotka hän on asettanut selaimeensa
3Sivun tekijän tyylit eli sinun tyylitiedostosi
4Sivun tekijän !important-määritykset
5 (vahvin)Käyttäjän !important-määritykset
Kaksi yleistä väärinkäsitystä

3.2 Vaihe 2: spesifisyys

Jos säännöt ovat samasta lähteestä, voittaa tarkempi eli spesifisempi valitsin. Spesifisyys lasketaan kolmena lukuna:

Spesifisyyden laskeminen.
OsaMitä lasketaanEsimerkki
1. lukuTunnisteet (id)#valikko
2. lukuLuokat, attribuutit ja pseudoluokat.varoitus, :hover
3. lukuElementtien nimet ja pseudoelementitp, ::before

Vertailu tehdään vasemmalta oikealle: yksikin tunniste voittaa minkä tahansa määrän luokkia.

Esimerkkejä.
ValitsinSpesifisyys
p0, 0, 1
p strong0, 0, 2
.varoitus0, 1, 0
p.varoitus0, 1, 1
#tiedote1, 0, 0
style-attribuuttivoittaa kaikki yllä olevat

3.3 Vaihe 3: kirjoitusjärjestys

Jos lähde ja spesifisyys ovat samat, voittaa viimeisenä kirjoitettu sääntö. Tällä on käytännön merkitystä: yleiset säännöt kannattaa kirjoittaa tiedoston alkuun ja poikkeukset loppuun.

p { color: green; }
p { color: red; }    /* tämä voittaa, koska se on myöhemmin */

Sama koskee saman säännön sisällä olevia ominaisuuksia:

h2 {
  border: 0;                        /* poistaa ensin kaikki reunat */
  border-bottom: 1px solid black;   /* lisää sitten alareunaan viivan */
}

3.4 !important

Määrityksen perään voi lisätä !important, jolloin se nousee lähdejärjestyksessä ylemmälle tasolle ja voittaa tavalliset säännöt spesifisyydestä riippumatta.

p { color: red !important; }
Käytä säästeliäästi

!important on hätäkeino. Se rikkoo spesifisyyden logiikan, ja kun tiedostossa on useita !important-määrityksiä, niiden keskinäistä järjestystä on vaikea seurata. Yleensä oikea ratkaisu on korjata valitsin tai sääntöjen järjestys. Käyttäjien omissa saavutettavuustyyleissä !important sen sijaan on paikallaan, koska vain sillä käyttäjä saa oman tyylinsä voimaan.

4. Tyylien määrittäminen

Tyylisääntö koostuu valitsimesta ja aaltosulkeisiin kirjoitetuista ominaisuus–arvo-pareista. Jokainen pari päättyy puolipisteeseen.

valitsin {
  ominaisuus: arvo;
  ominaisuus: arvo;
}

Yksinkertaisin valitsin on elementin nimi. Silloin sääntö koskee kaikkia sen nimisiä elementtejä dokumentissa.

body {
  color: black;
  background-color: white;
}

Samat ominaisuudet voi antaa monelle elementille erottelemalla valitsimet pilkuilla:

h1, h2, h3, h4, h5, h6 {
  font-family: Verdana, Arial, sans-serif;
  color: navy;
}
Pilkku ja välilyönti tarkoittavat eri asiaa

4.1 Perintä

Osa ominaisuuksista periytyy äitielementiltä lapsielementeille. Kun kirjoitat

<h1><strong>CSS</strong> on iso juttu.</h1>

strong-elementti saa saman tekstin värin ja kirjasintyypin kuin h1, ellei sille ole erikseen määrätty omia arvoja.

Kaikki ominaisuudet eivät periydy. Nyrkkisääntö on, että tekstiin liittyvät ominaisuudet periytyvät ja laatikkoon liittyvät eivät.

Periytyminen.
PeriytyyEi periydy
color, font-family, font-size, font-weight, line-height, text-align, letter-spacing, list-style background, border, margin, padding, width, height

Perinnän saa tarvittaessa pakotettua arvolla inherit, ja se katkaistaan antamalla elementille oma arvo.

5. Valitsimet

5.1 Elementtivalitsin

Elementin nimi valitsimena koskee kaikkia sen nimisiä elementtejä. Tämä on lähtökohta: muotoile ensin elementit, ja tee poikkeukset vasta sitten luokilla.

p { line-height: 1.6; }

5.2 Luokat (class) valitsimina

class-attribuutilla elementti määrätään käyttämään tiettyä tyyliä. Sama luokka voi olla usealla elementillä samassa dokumentissa.

<p>Normaalia tekstiä kappaleellinen.</p>
<p class="varoitus">Varoitus!</p>

Vastaavat tyylimääritykset:

p {
  color: green;
  text-align: center;
}

p.varoitus {
  color: red;
}

Valitsin p.varoitus osuu vain p-elementteihin, joilla on luokka varoitus. Jos haluat saman luokan toimivan minkä tahansa elementin kanssa, jätä elementin nimi pois:

.varoitus {
  color: red;
}
Tämä ei ole perintää vaan spesifisyyttä

Vanhoissa ohjeissa sanotaan, että luokka "perii ominaisuuksia peruselementiltä". Se on harhaanjohtavaa: perintä tarkoittaa äitielementiltä lapselle siirtyviä ominaisuuksia. Tässä on kyse eri asiasta: molemmat säännöt osuvat samaan elementtiin, ja niiden määritykset yhdistyvät. Ristiriidat ratkeavat spesifisyydellä.

Alla olevilla säännöillä kappaleen väri on sininen, vaikka yleistetty valitsin on tiedostossa myöhemmin: p.varoitus on spesifisempi (0, 1, 1) kuin .varoitus (0, 1, 0).

p.varoitus { color: blue; }
.varoitus  { color: red; }

Elementillä voi olla useita luokkia välilyönnillä eroteltuina:

<p class="varoitus korostettu">Tämä käyttää molempia luokkia.</p>

5.3 Tunnisteet (id) valitsimina

id-attribuutilla määrätään yksi elementti käyttämään tiettyä tyyliä. Tunnisteen arvo saa esiintyä dokumentissa vain kerran.

<p id="tiedote">Tärkeä tiedote.</p>
#tiedote {
  color: red;
}
Käytä luokkaa, ei tunnistetta

Tunniste toimii vain yhdellä elementillä ja on spesifisyydeltään niin vahva, että sen ylikirjoittaminen myöhemmin on hankalaa. Ulkoasun määrittelyyn kannattaa lähes aina käyttää luokkaa. Tunniste on hyödyllinen muihin tarkoituksiin: siihen voi viitata dokumentin sisäisellä linkillä ja label-elementin for-attribuutilla.

5.4 Asiayhteyden mukaan määräytyvät tyylit

Kun valitsimet kirjoitetaan peräkkäin välilyönnillä eroteltuina, sääntö osuu vain niihin elementteihin, jotka ovat toisen sisällä. Näin samalle elementille voi antaa eri ulkoasun sen mukaan, missä se sijaitsee.

p strong {
  color: red;
}

Sääntö koskee vain p-elementin sisällä olevia strong-elementtejä. Muualla olevat strong-elementit säilyvät ennallaan.

5.5 Pseudoluokat

Pseudoluokka osuu elementtiin sen tilan perusteella: onko linkkiä jo käyty, onko hiiri sen päällä, onko kenttä valittuna. Pseudoluokka kirjoitetaan kaksoispisteellä valitsimen perään.

Tavallisimmat pseudoluokat.
PseudoluokkaOsuu, kun
:linkLinkkiä ei ole vielä avattu
:visitedLinkissä on jo käyty
:hoverOsoitin on elementin päällä
:focusElementti on valittuna, esimerkiksi sarkaimella siirryttäessä
:focus-visibleKuten edellinen, mutta vain kun selain arvioi kohdistuksen tarpeelliseksi näyttää
:activeElementtiä painetaan parhaillaan
:first-child, :last-childElementti on äitinsä ensimmäinen tai viimeinen lapsi
:nth-child(2n)Joka toinen lapsi. Kätevä taulukon riveissä
a:hover  { text-decoration: underline; }
a:focus  { outline: 2px solid orange; }
tr:nth-child(even) { background-color: #f2f2f2; }
Linkkien pseudoluokat oikeassa järjestyksessä

Linkin neljä pseudoluokkaa on kirjoitettava tyylitiedostoon järjestyksessä :link, :visited, :hover, :active. Muussa järjestyksessä myöhemmät säännöt kumoavat aiemmat, koska niillä on sama spesifisyys. Muistisääntö on LoVe HAte.

Älä poista kohdistusreunusta

Selain piirtää valittuna olevan elementin ympärille reunuksen, jotta näppäimistöllä liikkuva näkee, missä hän on. Merkintä outline: none tekee näppäimistökäytöstä mahdotonta. Jos oletusreunus ei miellytä, korvaa se omalla näkyvällä tyylillä äläkä poista sitä.

6. Mittayksiköt

Pituudet kannattaa ilmaista suhteellisina, jolloin sivu skaalautuu käyttäjän asetusten ja näytön koon mukana.

Käyttökelpoiset yksiköt.
YksikköMihin suhteutetaanKäyttö
rem Juurielementin (html) laskettuun fonttikokoon. Jos et muuta sitä, se on käyttäjän selaimeensa asettama fonttikoko Fonttikoot. Ei kertaudu sisäkkäin, joten lopputulos on ennustettava
em Elementin omaan laskettuun fonttikokoon. font-size- ominaisuudessa poikkeuksellisesti äitielementin fonttikokoon Marginaalit ja täytteet, jotka halutaan skaalautuvan tekstin mukana
% Äitielementin vastaavaan mittaan Leveydet
ch Nollan merkin leveyteen käytössä olevalla kirjasimella Tekstipalstan leveys. Luettavuudeltaan hyvä rivi on noin 60–75 merkkiä
vh, vw Näkymäikkunan korkeuteen ja leveyteen. 1vh on 1 % näkymäikkunan korkeudesta Koko ruudun kokoiset osiot
px Kiinteä yksikkö, 1/96 tuumaa Ohuet reunaviivat ja kuvien mitat. Ei fonttikokoihin
Miksei px kelpaa fonttikokoon?

Vanhoissa ohjeissa perustellaan, että pikselin koko vaihtelee näytön koon ja tarkkuuden mukaan. Se ei pidä paikkaansa: CSS:n px on kiinteä vertailuyksikkö.

Oikea syy on saavutettavuus. Kun käyttäjä suurentaa selaimensa oletusfonttikokoa asetuksista, rem- ja em-mittainen teksti kasvaa mukana mutta px-mittainen ei muutu lainkaan. Heikkonäköinen käyttäjä ei siis saa tekstiäsi luettavaan kokoon. Selaimen zoomaus kyllä suurentaa myös px-tekstiä, mutta se suurentaa kaiken muunkin eikä korvaa fonttikokoasetusta.

em kertautuu sisäkkäin

Jos ul { font-size: 0.9em; } ja listat ovat sisäkkäin, toisen tason lista on 0,81-kertainen ja kolmannen 0,73-kertainen. Teksti kutistuu huomaamatta. Käytä fonttikokoihin rem-yksikköä, joka suhteutuu aina juureen.

html { font-size: 100%; }        /* kunnioittaa käyttäjän asetusta */
body { font-size: 1rem; line-height: 1.6; }
h1   { font-size: 2rem; }
h2   { font-size: 1.5rem; }
p    { max-width: 70ch; margin-bottom: 1em; }

7. Sivuilla käytettävät värit

Värin voi ilmaista usealla tavalla. Kaikki alla olevat tarkoittavat samaa punaista.

Värin merkintätavat.
TapaEsimerkkiHuomioita
Nimicolor: red;Noin 150 nimettyä väriä. Kätevä kokeiluun
Heksadesimaalicolor: #ff0000;Yleisin tapa. Lyhennetty muoto #f00 toimii, kun parit ovat samoja
RGB lukuinacolor: rgb(255 0 0);Kukin osa väliltä 0–255
RGB prosentteinacolor: rgb(100% 0% 0%);Harvinaisempi
HSLcolor: hsl(0 100% 50%);Sävy, kylläisyys ja vaaleus. Helpoin tapa tehdä saman sävyn vaaleampi tai tummempi versio
Läpinäkyvyyscolor: rgb(255 0 0 / 50%);Kauttaviivan jälkeen alfa-arvo
currentColorborder-color: currentColor;Sama kuin elementin color
p {
  color: #222222;
  background-color: #ffffff;
}
Määritä aina molemmat

Kun asetat taustavärin, aseta myös tekstin väri, ja päinvastoin. Muuten lopputulos riippuu siitä, mitä käyttäjän selain on asettanut toiselle, ja teksti voi jäädä lukukelvottomaksi. Sama koskee tummaa tilaa käyttäviä laitteita.

Tarkista kontrasti

Tekstin ja taustan välisen kontrastin on oltava riittävä. Saavutettavuusvaatimus on 4,5:1 tavalliselle tekstille ja 3:1 suurelle tekstille (vähintään 24 px tai lihavoituna 19 px). Vaaleanharmaa teksti valkoisella taustalla on tyypillinen tapa epäonnistua.

Kontrastin voi tarkistaa WebAIMin kontrastityökalulla tai selaimen kehittäjätyökaluilla: kun valitset elementin ja avaat värivalitsimen, työkalu näyttää kontrastisuhteen suoraan.

Väri ei myöskään saa olla ainoa tapa välittää tietoa. Jos virheelliset kentät merkitään punaisella, mukana on oltava myös teksti tai symboli.

Värien valintaan on apuvälineitä, esimerkiksi ColorZilla, jolla voi poimia värin miltä tahansa sivulta, sekä Coolors ja Adobe Color väripalettien rakentamiseen.

8. Kommentit

Kommentti alkaa merkinnällä /* ja päättyy merkintään */. Se voi olla yhden tai usean rivin mittainen.

strong {
  /* Korostamiseen käytettävä tyyli */
  background-color: white;
  color: red;
}

Huomaa, että CSS:ssä ei ole rivin loppuun ulottuvaa //-kommenttia, vaikka se on tuttu monista ohjelmointikielistä. Sellainen rivi jää tulkitsematta ja voi rikkoa sitä seuraavan säännön.

9. Laatikkomalli (box model)

CSS käsittelee jokaista elementtiä laatikkona, jolla on neljä kerrosta sisältä ulospäin:

Laatikon osat.
OsaSuomeksiSelitys
contentsisältöVarsinainen teksti tai kuva
paddingtäyteTyhjä tila sisällön ja reunan välissä. Saa taustavärin
borderrajaReunaviiva
marginmarginaaliTyhjä tila laatikon ulkopuolella. Ei saa taustaväriä
div {
  padding: 1em;
  border: 1px solid black;
  margin: 2em;
}
width ei tarkoita koko laatikon leveyttä

Oletuksena width ja height koskevat vain sisältöä. Täyte ja reuna tulevat sen päälle, joten alla oleva laatikko vie tilaa 300 + 2 × 20 + 2 × 1 = 342 pikseliä.

div {
  width: 300px;
  padding: 20px;
  border: 1px solid black;
}

Ominaisuudella box-sizing: border-box width alkaa tarkoittaa koko laatikkoa täytteineen ja reunoineen, mikä on lähes aina helpompaa. Monissa tyylitiedostoissa se asetetaan kerralla kaikille elementeille:

* {
  box-sizing: border-box;
}

Laatikoiden asettelu vierekkäin ja allekkain käsitellään omalla luennollaan.

9.1 Yhdistyvät marginaalit

Lohkojen ylä- ja alamarginaalit yhdistyvät silloin, kun niiden välissä ei ole mitään sisältöä. Yhdistämisessä käytetään suurempaa marginaalia, ei niiden summaa.

Yhdistymisen estää se, että väliin tulee jotain: reuna, täyte tai sisältöä. Yksinkertaisin keino on antaa lohkolle padding tai min-height.

Tarkempi kuvaus: Mastering margin collapsing (MDN).

10. Taulukoiden ulkoasu

Taulukon ulkoasuun vaikuttavat erityisesti seuraavat ominaisuudet.

Taulukkoon liittyvät ominaisuudet.
OminaisuusMerkitys
border-collapse collapse yhdistää solujen rajat yhdeksi viivaksi, separate pitää ne erillisinä
border-spacing Erillisten rajojen välinen etäisyys, esimerkiksi border-spacing: 5px;
caption-side Taulukon otsikko taulukon ylä- (top) tai alapuolelle (bottom)
empty-cells show näyttää tyhjien solujen rajat, hide piilottaa ne
table-layout auto sovittaa sarakkeet sisällön mukaan, fixed määrää leveydet ensimmäisen rivin tai col-elementtien mukaan
vertical-align Solun sisällön sijoittelu pystysuunnassa

Taulukossa ei näy mitään rajoja, ellet aseta niitä th- ja td-elementeille. Pelkkä table-elementin reuna piirtää viivan vain koko taulukon ympärille.

table {
  border-collapse: collapse;
}

th, td {
  border: 1px solid #999999;
  padding: 0.4em 0.7em;
  text-align: left;
}

caption {
  caption-side: top;
  text-align: left;
  font-style: italic;
}
Muista taulukon rakenne

CSS ei korjaa puutteellista merkintää. Taulukossa on oltava caption, otsikkosolut th-elementteinä ja niissä scope-attribuutti. Katso HTML5-luennon luku 11.

11. Tavallisimmat ominaisuudet

Alla on tällä kurssilla tarvittavat ominaisuudet ryhmiteltynä. Jokaisen tarkka kuvaus löytyy MDN:n CSS-hakemistosta ja suomeksi kurssisivuston CSS-dokumentaatiosta.

11.1 Kirjasin

OminaisuusHuomioita
font-family Anna aina useita vaihtoehtoja, koska et voi tietää mitä kirjasimia käyttäjällä on. Viimeisenä on oltava yleinen kirjasinperhe: serif (päätteellinen), sans-serif (päätteetön) tai monospace (tasavälinen)
font-sizeKäytä rem-yksikköä. Älä tee tekstistä liian pientä; leipätekstin oletuskoko 1rem on hyvä lähtökohta
font-weightLihavointi, esimerkiksi bold tai 700
font-styleKursivointi arvolla italic
font-variantEsimerkiksi small-caps
fontLyhennemerkintä, joka asettaa kaikki edelliset kerralla
body {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1rem;
}

11.2 Teksti

OminaisuusHuomioita
line-heightRiviväli. Anna yksiköttömänä lukuna, esimerkiksi 1.6, jolloin se skaalautuu fonttikoon mukana. Riittävä riviväli on luettavuuden kannalta yhtä tärkeä kuin fonttikoko
text-alignTasaus. Vältä arvoa justify: se tuottaa epätasaisia sanavälejä ja haittaa lukemista
text-decorationAlleviivaus. Älä poista linkkien alleviivausta ilman muuta selvää erottavaa tekijää
text-transformMuuttaa kirjainkokoa, esimerkiksi uppercase. Muuttaa vain ulkoasun, ei sisältöä
text-indentEnsimmäisen rivin sisennys
letter-spacing, word-spacingMerkkien ja sanojen väli
white-spaceMiten tyhjämerkit ja rivinvaihdot käsitellään

11.3 Väri ja tausta

OminaisuusHuomioita
colorTekstin väri
background-colorTaustaväri. Määritä aina yhdessä color-ominaisuuden kanssa
background-imageTaustakuva. Aseta aina myös taustaväri sen varalta, ettei kuva lataudu
background-repeatToistuuko taustakuva
background-positionTaustakuvan sijainti
backgroundLyhennemerkintä kaikille edellisille
opacityKoko elementin läpinäkyvyys välillä 0–1. Vaikuttaa myös lapsielementteihin

11.4 Marginaali, täyte ja raja

OminaisuusHuomioita
marginYksi arvo koskee kaikkia sivuja, kaksi arvoa pysty- ja vaakasuuntaa, neljä arvoa järjestyksessä ylä, oikea, ala, vasen
paddingSama merkintätapa kuin marginaalissa
border-width, border-style, border-colorReunan leveys, tyyli ja väri. border-style on pakollinen: ilman sitä reunaa ei näy, vaikka leveys ja väri olisi annettu
borderLyhennemerkintä: border: 1px solid black;
border-radiusPyöristetyt kulmat
box-sizingMäärää, koskeeko width sisältöä vai koko laatikkoa. Katso luku 9
margin: 1em;                /* kaikille sivuille */
margin: 1em 2em;            /* ylä ja ala 1em, vasen ja oikea 2em */
margin: 1em 2em 0.5em 2em;  /* ylä, oikea, ala, vasen */

12. Kehittäjätyökalut CSS-editorina

Selaimen kehittäjätyökaluilla voi kokeilla tyylimuutoksia suoraan sivulla ja nähdä tuloksen heti. Tämä on nopein tapa opetella CSS:ää ja etsiä vikoja.

  1. Napsauta muutettavaa kohtaa hiiren oikealla painikkeella ja valitse Tutki tai Inspect. Työkalut avautuvat ja oikea elementti on valmiiksi valittuna. Työkalut saa auki myös F12-näppäimellä.
  2. Oikeanpuoleisessa paneelissa näkyvät kaikki elementtiin osuvat säännöt vahvimmasta heikoimpaan. Jokaisen säännön perässä lukee, mistä tiedostosta ja miltä riviltä se tulee.
  3. Yliviivattu määritys tarkoittaa, että jokin toinen sääntö on voittanut sen. Tämä on nopein tapa nähdä kaskadi käytännössä.
  4. Voit muokata arvoja kaksoisnapsauttamalla, kytkeä yksittäisen määrityksen pois päältä valintaruudusta ja lisätä uusia napsauttamalla säännön sisällä.
  5. Muutokset eivät tallennu tiedostoon ja katoavat, kun lataat sivun uudelleen. Kokeile ensin täällä ja kirjoita toimiva ratkaisu sen jälkeen tyylitiedostoon.
Hyödyllisimmät välilehdet.
NäkymäMitä siitä näkee
Rules / StylesElementtiin osuvat säännöt ja se, mikä voittaa
ComputedLopulliset lasketut arvot. Kertoo, mistä säännöstä kukin arvo tuli
Layout (Firefox) tai Computed (Chrome)Laatikkomalli kuvana: sisältö, täyte, raja ja marginaali mittoineen
VärivalitsinNapsauta väriruutua säännössä. Näyttää myös tekstin ja taustan kontrastisuhteen

13. Tarkistuslista

  1. Onko kaikki ulkoasu erillisessä tyylitiedostossa? Sivuilla ei saa olla style-elementtiä eikä style-attribuuttia.
  2. Onko link-elementissä suhteellinen osoite ja rel="stylesheet", eikä turhaa type- tai title-attribuuttia?
  3. Onko fonttikoot annettu rem-yksikössä eikä px-yksikössä?
  4. Onko jokaisen taustavärin kanssa määritelty myös tekstin väri?
  5. Onko tekstin ja taustan kontrasti vähintään 4,5:1?
  6. Näkyykö kohdistus, kun liikut sivulla sarkainnäppäimellä?
  7. Ovatko linkkien pseudoluokat järjestyksessä :link, :visited, :hover, :active?
  8. Meneekö tyylitiedosto CSS-validaattorista läpi ilman virheitä?
  9. Toimiiko sivu myös ilman tyylitiedostoa? Kokeile poistaa link-rivi hetkeksi: sisällön pitää olla yhä luettavissa ja oikeassa järjestyksessä.

14. Lisätietoa

Käyttäjien kommentit

Kommentoi Lisää kommentti