CSS (Cascading Style Sheets)
- Luentotaltiointi
- Perusteet
- Tyylien liittäminen dokumenttiin
- Tyylien määrittäminen
- Mittayksiköt
- Värit
- Kommentit
- Tyylien liittäminen toisesta tyylitiedostosta
- Tyylien valitsimet (engl. selectors)
- Valitsimet ja harvinaisemmat pseudoluokat
- Laatikkomalli (engl. box model)
- Collapsing margins
- Mediatyypit
- Erilaiset mediatyypit
- Ylivuoto
- display-ominaisuus
- Minimin ja maksimin määrittely elementin leveydelle ja korkeudelle
- Käyttäjän määräämät tyylit
- CSS1:n ominaisuudet
- Lisätietoja
Seuraavassa tarkastellaan CSS-tyylilomakkeiden käyttöä ja niiden perusominaisuuksia Cascading Style Sheets, level 2 (CSS2)-suosituksen mukaisesti.
Luentotaltiointi
- sovellukset02.mp3 16M
- sovellukset02.wmv 36M
- sovellukset02_xvid.avi 109M
Perusteet
- Dokumenttien rakenne määritellään XHTML:n
avulla.
- Sisältö on hyvin tulkittavissa.
- Sisältö on saatavissa riippumatta näyttölaitteesta.
- Sisältö on helposti muunnettavissa.
- Dokumenttien ulkoasu määritellään
CSS-tyylilomakkeen avulla.
- Dokumentin rakenne on yksinkertainen.
- Sivuilla yhtenäinen ulkoasu.
- Ulkoasun määrittämiseen ei mene aikaa.
- Keskitetty ulkoasun päivitys.
- Dokumentteja voidaan katsella monenlaisia ohjelmilla ja laitteilla (mediat)
- erilaiset graafiset selaimet
- mobiiliselaimet
- ääniselain
- tekstiselain
- tv:n selain
- tulostin
- projektori
- kohopistekirjoitin
Tyylien liittäminen dokumenttiin
Tyylit liitetään xhtml-dokumenttiin link-elementillä seuraavaan tapaan:
<link href="tyylit.css" rel="stylesheet" type="text/css" title="Tyylin nimi" media="all" />
- Tyyli on aina käytössä (persistent) jos title-attribuuttia ei ole määritelty.
<link href="tyylit.css" rel="stylesheet" type="text/css" media="all" /> - Tyyli on oletuksena käytössä mutta voidaan vaihtaa (preferred) jos
title-attribuutilla on jokin arvo.
Kaikki tyylit joilla on sama title-attribuutin arvo käsitetään yhdeksi tyyliryhmäksi. Jos ryhmiä on useita niin oletuksena käytetään niistä ensimmäistä.<link href="tyylit.css" rel="stylesheet" type="text/css" title="perustyyli" media="all" /><link href="tyyli1.css" rel="stylesheet" type="text/css" title="Päätyyli" media="all" /><link href="tyyli2.css" rel="stylesheet" type="text/css" title="Päätyyli" media="all" /><link href="tyyli3.css" rel="stylesheet" type="text/css" title="Muu tyyli" media="all" /> - Muuttamalla rel-attribuutin arvoksi Alternate stylesheet
voidaan määritellä vaihtoehtoisia tyylejä joista käyttäjä voi valita haluamansa.
<link href="tyylit.css" rel="Alternate stylesheet" type="text/css" title="Vaihtoehto" media="all" /> - media-attribuutilla voidaan määritellä millaisilla laitteille tyylinmääritykset ovat
tarkoitettuja, esim. mobiiliselaimille voisi määritellä mediaksi handheld.
<link href="tyylit.css" rel="Alternate stylesheet" type="text/css" title="Vaihtoehto" media="handheld" />
style-elementti
Tyylejä voi lisätä dokumenttikohtaisesti käyttämällä style-elementtiä:
<head>
<title>foo</title>
<style type="text/css" media="screen">
h1 { background-color: white; }
</style>
</head>
style-elementin käyttöä ei voi kuitenkaan suositella koska se rajaa vaikutuksen vain yhteen dokumenttiin. Sama voidaan tehdä yhtä helposti ulkoisella css-tiedostolla.
style-attribuutti
Tyylejä voi lisätä elementtikohtaisesti käyttämällä style-attribuuttia:
<h1 style="background-color: white;">Otsikko</h1>
style-attribuutin käyttöä ei voi kuitenkaan suositella koska se rajaa vaikutuksen vain yhteen elementtiin. Sama voidaan tehdä yhtä helposti ulkoisella css-tiedostolla ja class-attribuutin tai id:n avulla.
Tyylien määrittäminen
Perusperiaate on muuttaa olemassaolevien HTML-elementtien ominaisuuksia. Oletuksena tyylin nimi on siis sama kuin sen HTML-elementin nimi, jonka ulkoasuominaisuuksia halutaan muokata. Jokaisella muutettavalla ominaisuudella on tietty nimi.
tyylinimi {
ominaisuus: arvo;
}
CSS:n ominaisuuksista löytyy dokumentti osoitteesta:
http://appro.mit.jyu.fi/doc/css/
Esim. määritellään body-elementin tekstin väriksi musta ja taustaväriksi valkoinen:
body {
color: black;
background-color: white;
}
Esim. määritellään kaikille otsikkotasoille sama fontti, väri ja alaviiva:
h1, h2, h3, h4, h5, h6 {
font-family: Verdana, sans-serif;
color: blue;
border-bottom: 1px solid black;
}
- Samat ominaisuudet voidaan laittaa monille elementeille erottelemalla elementit pilkuilla.
- Vaihtoehtoiset ominaisuudet luetellaan pilkuilla.
- Jos ominaisuuteen voidaan määrittää useita arvoja niin ne on eroteltava välilyönnillä.
- CSS-määritykset luetaan käyttöön kirjoitusjärjestyksessä jolloin voi olla merkitystä missä järjestyksessä tyylisääntöjä kirjoittaa.
Perintä
Dokumenttipuun elementit perivät esim. tekstin värin äitielementiltään:
<h1><strong>CSS</strong> on iso juttu</h1>
strong-elementti saa saman tekstin värin kuin mikä h1-elementillä on ellei väriä ole strong-elementille erikseen määrätty. Kaikki ominaisuudet eivät periydy.
Mittayksiköt
Pituudet ja korkeudet kannattaa aina ilmaista suhteellisesti prosentteina tai em-yksikköinä.
em suhteutetaan aina oletusfontin kokoon.
px (pikseli) yksikköä
voi käyttää reunusten ja marginaalien määrittelyssä mutta sitä
ei suositella käytettäväksi kirjasimen koon määrittämiseen.
p {
font-size: 120%;
}
h1 {
margin-top: 1em;
}
h2 {
border: 1px solid black;
}
Muita css:n tuntemia yksiköitä ovat ex, in, cm,mm, pt, pc. Näitä tarvitaan kuitenkin äärimmäisen harvoin ja ex-yksikköä lukuunottamatta ovat hyödyllisiä vain jos käytetyn median fyysinen koko on tiedossa.
Värit
Värien määrittämisessä on käytössä useita tapoja. Helpoin tapa on käyttää prosentteja:
p { background-color: rgb(100%, 100%, 100%) /* valkoinen */ }p { background-color: #ffffff /* valkoinen */ color: #000000 /* musta */ }
Kommentit
Kommentointi onnistuu c-kielestä tutulla tavalla:
strong { /* Korostamiseen käytettävä tyyli */
background-color: white;
color: red;
}
Tyylien liittäminen toisesta tyylitiedostosta
@import-säännöllä voi liittää omaan tyylitiedostoonsa muiden tyylitiedostojen sisältämiä tyylejä. @import-rivien pitää olla css-tiedostossa ensimmäisinä.
@import "toinentyyli.css";
@import url(http://appro.mit.jyu.fi/appro2003.css);
Tyylien valitsimet (engl. selectors)
class-attribuutin avulla voidaan xhtml-elementti määrätä käyttämään
tiettyä tyyliä. Esim.
<p>Normaalitekstiä kappaleellinen</p>
<p class="varoitus">varoitus </p>
Vastaavat tyylimääritykset
p {
background-color: white;
color: green;
text-align: center;
}
p.varoitus {
background-color: white;
color: red;
}
Edellisen valitsimen yleistys, jota voidaan käyttää kaikkien elementtien yhteydessä.
.varoitus {
background-color: white;
color: red;
}
Esimerkki tyylin aliluokan käytöstä .
Asiayhteyden mukaan määräytyvät tyylit
Tyylien avulla voidaan määritellä asiayhteyden mukaan käyttäytyviä tyylejä. Eräs tällainen esimerkki on p-elementin sisällä oleva strong-elementti.
p-elementin sisällä oleva strong-elementti muotoillaan seuraavan säännön mukaisesti:
p strong {
background-color: white;
color: red;
}
.navbar ul li {
display: inline;
}
Esimerkki asiayhteyden mukaan määräytyvästä tyylistä.
pseudoluokat (pseudoluokat)
Näennäisluokat ovat tyylien erikoistapauksia, jolla saadaan esimerkiksi linkille tapauskohtainen käyttäytyminen sen mukaan onko linkki vierailtu vai ei.
a:link { /* vierailematon linkki */
color: blue;
background-color: transparent;
}
a:visited { /* vierailtu linkki */
color: purple;
background-color: transparent;
}
a:active { /* aktiivinen linkki */
color: red;
background-color: transparent;
}
a:hover { /* kohdistettu linkki */
color: blue;
background-color: gray;
}
Esimerkki näennäisluokkien käytöstä.
Valitsimet ja harvinaisemmat pseudoluokat
Seuraavassa on esitelty lyhyeiden esimerkkien avulla erilaisia CSS2:n valitsimia (engl. selectors) ja näennäisluokkia (engl. pseudo). Valitsimien (engl. selector) avulla voidaan viitata xhtml-dokumentissa käytettyihin rakenteisiin määrityksiin, joten ne toimivat eräällä tavalla tyylin niminä.
| Valitsin | Selitys |
|---|---|
* |
Valitsee jokaisen elementin |
.luokka |
Valitsee jokaisen elementin jonka class-attribuutin arvo on luokka. |
E |
Valitsee jokaisen elementin E |
E F |
Valitsee elementin F, joka on elementin E jälkeläinen |
E> F |
Valitsee elementin F, joka on elementin E lapsi |
E:first-child |
Valitsee elementin E, jos elementti E on äitielementtinsä ensimmäinen lapsielementti |
E + F |
Valitsee elementin F jos se on heti elementin E jälkeen |
E[foo] |
Valitsee elementin E jos elementin E foo-attribuutilla on jokin arvo |
E[foo="varoitus"] |
Valitsee elementin E jos elementin E foo-attribuutilla on arvona varoitus |
E#tunniste |
Valitsee elementin E, jos elementin E ID-attribuutin arvo on tunniste |
E:before |
Lisää ennen elementtiä E jotakin sisältöä |
E:after |
Lisää elementin E jälkeen jotakin sisältöä |
E:first-letter |
Valitsee elementin E ensimmäisen kirjaimen |
E:first-line |
Valitsee elementin E ensimmäisen rivin |
| Valitsin | CSS | xhtml |
|---|---|---|
* |
* {
background-color: white;
} |
|
E |
h1 { color: red; } |
|
.luokka |
.luokka { color: red; } |
<div class="luokka">Tämä tulee punaisella</div> |
E F |
ul strong { color: red; } |
<ul><li>Tässä jotain tekstiä ja <strong>tärkeä</strong> sana</li></ul> |
E > F |
ul > li > strong { color: red; } |
<ul><li>Tässä jotain tekstiä ja <strong>tärkeä</strong> sana</li></ul> |
E:first-child |
p:first-child { color: red; } |
<body><p>Tämä on ensimmäinen kappale, joka tulee punaisella</p><p>Tämä tulee normaalilla värillä</p></body> |
E + F |
p + p { color: red; } |
<p>Tämä on ensimmäinen kappale, joka tulee normaalilla värillä</p><p>Tämä tulee punaisella värillä</p> |
E[foo] |
img[title] { border: 1px solid red; } |
<p><img src="kuva.jpg" alt="foo" title="bar" /></p> |
E[foo="varoitus"] |
a[href="http://appro.mit.jyu.fi/www/"] { font-size: 1.2em; } |
<a href="http://appro.mit.jyu.fi/www/">WWW-julkaiseminen</a> |
E#tunniste |
p#tarkein { color: red; } |
<p id="tarkein">tämä on sivun tärkein tekstikappale</p> |
E:before |
p:before { content: "Lue tarkkaan "; color: red; } |
|
E:after |
p:after { content: " - Tommi "; color: yellow; } |
|
E:first-letter |
p:first-letter { font-size: 1.5em; } |
|
E:first-line |
p:first-line { text-transform: uppercase; } |
Esimerkkejä valitsimista. Esimerkissä käytetty css
Esimerkkejä näennäisluokkien käytöstä
Laatikkomalli (engl. box model)
CSS:n laatikkomalli määrittää jokaisen elementin laatikoksi jolla on marginaali, raja, täyte ja sisältö.
Collapsing margins
Joissain tilanteissa elementtien marginaalit yhdistetään ja suurempi marginaali jää voimaan.
Mediatyypit
- Mediatyyppien tarkoituksena on mahdollistaa sivun ulkoasun määrittely mediakohtaisesti
- Esimerkiksi WWW-dokumentti voidaan muotoilla erilaisilla mediatyypeillä eri tavalla paperille kuin näytölle.
- Hyötynä tästä saavutetaan, että jokaista mediaa varten voidaan tehdä omat tyylimääritykset, jotka mahdollistavat tiedon tehokkaan saamisen useamman median kautta.
Erilaiset mediatyypit
- all-tyyppiin voidaan määritellä asetuksia kaikille laitteille.
- aural-tyyppiin voidaan määritellä asetuksia puhesyntetisaattoreita varten. aural-tyyppi on poistettu suosituksesta ja korvautuu myöhemmin speech-mediatyypillä.
- braille-tyyppiin voidaan määritellä asetuksia esimerkiksi pistekirjoitusnäyttöä varten.
- embossed-tyyppiin voidaan määritellä asetuksia brailletulostimia varten.
- handheld-tyyppiin voidaan määritellä pieninäyttöisille laitteille.
- print-tyyppiin voidaan määritellä esimerkiksi paperille tulostettavaksi tarkoitettuja asetuksia.
- projection-tyyppiin voidaan määritellä asetukset projektoreita varten.
- screen-tyyppiin voidaan määritellä tietokonenäytöllä käytettäviä asetuksia.
- tty-tyyppiin voidaan määritellä tasalevyistä kirjasinta käyttäviin laitteisiin.
- tv-tyyppiin voidaan määritellä asetuksia televisiotyyppisille laitteille.
Sivun ominaisuuksia
Sivun ominaisuuksilla voidaan hallita dokumenttia sivutettuna. Seuraavassa muutamia sivuttamiseen liittyviä ominaisuuksia.
- page-break-before-voidaan määritellä sivunvaihdon käyttäytyminen ennen kappaletta.
- page-break-after-voidaan määritellä sivunvaihdon käyttäytyminen kappaleen jälkeen.
- page-break-inside-voidaan määritellä sivunvaihdon käyttäytyminen lohkon sisällä.
- Sivunvaihdon esiintyminen voidaan kieltää arvolla avoid ja sivunvaihto voidaan pakottaa arvolla always.
Esimerkkejä mediatyyppien käytöstä
- Kurssin kotisivuja tulostettaessa jätetään tulosteista pois navigointipalkit
sekä pyritään välttämään sivunvaihtoa asiakirjan eri rakenteissa. Tämä on toteutettu seuraavilla CSS-määrittelyillä.
@media print { h1, h2, h3 { page-break-after: avoid; page-break-inside: avoid; } ul, ol, dl { page-break-before: avoid; } .navbar, .navbartop { display: none; } } - Toinen esimerkki mediatyyppien käytöstä löytyy WWW-sivujen näyttämisestä
esityksenomaisesti. Esimerkiksi tämä sivu näkyy Opera-selaimella diaesityksenä,
kun sitä katsotaan kokoruututilassa.
@media projection { body { margin-top: 1em; margin-left: 1em; margin-right: 1em; font-size: 200%; } h1,h2,h3{ page-break-before: always; } .navbartop, .navbar { display: none; } } -
Tarkempi esimerkki aural-mediatyypin määrittelyistä : aural.css.
- Esimerkki handheld-medista
Ylivuoto
- Ylivuoto eli overflow-ominaisuudella voidaan määritellä mitä pitää tehdä jos elementti ei mahdu
sille annettuun tilaan. Elementin käyttäytymistä voidaan määritellä seuraavien arvojen avulla
- visible-arvolla ylivuotava osuus näytetään.
- hidden-arvolla ylivuotava osuus piilotetaan.
- scroll-arvolla elementtiin voidaan määritellä vierityspalkki sisällön vieritykseen.
- auto-arvolla elementtiin tehdään tarvittaessa vierityspalkki.
Seuraavassa esimerkki ominaisuuksien käytöstä
- Esimerkki overlow-, clip-, ja visibility-ominaisuuksista
- overflow.html - lähdekoodi
- overflow.css - lähdekoodi
display-ominaisuus
display-ominaisuudella voidaan muuttaa esimerkiksi tekstikappaleen näkymiseen liittyviä ominaisuuksia. Tekstikappaleesta voidaan tehdä visuaalisesti osa toista tekstikappaletta tai sen näkyminen voidaan estää kokonaan. display-ominaisuudelle voidaan asettaa mm. seuraavia arvoja.
- block-arvolla elementti käyttäytyy lohkotason elementin tavoin.
- inline-arvolla elementti käyttäytyy tekstitason (inline) elementin tavoin.
- inline-block tekstitasolla esiintyvä lohko (vrt. img)
- list-item-arvolla elementti käyttäytyy lista-alkion tavoin.
- none-arvolla elementin sisältöä ei näytetä ollenkaan ja elementti ei vaikuta mitenkään ympäröiviin elementteihin.
Esimerkki keskittämisestä pystysuunnassa display-ominaisuuden avulla.
Minimin ja maksimin määrittely elementin leveydelle ja korkeudelle
Minimi- ja maksimikoko kannattaa joskus määrätä esim. navigointialueille tai tekstialueille.
Käyttäjän määräämät tyylit
Kaikkiin uusimpiin selaimiin voi itse määritellä omat CSS-asetukset joita käytetään oletuksena sivuja näytettäessä. Käyttäjä voi oman selaimensa asetuksilla ohittaa sivuntekijän määrittelyt:
CSS-asetuksien ylimäärittely !important-määreellä:
background: white none !important
CSS1:n ominaisuudet
- Kirjasimen
ominaisuudet (esimerkki)
- font-family
Kirjasintyyppiä määrättäessä pitää muistaa antaa useita vaihtoehtoja koska ei voida tietää mitä kirjasimia käyttäjien koneilta löytyy. Viimeisenä vaihtoehtona pitää antaa yleisen kirjasinperheen nimi:
- sans-serif (päätteetön)
- serif (päätteellinen)
- monospace (tasavälinen)
- font-style
- font-variant
- font-weight
- font-size
Kirjasimen kokoa määrättäessä pitää varoa ettei tee kirjasimesta liian pientä. Järkevintä on yleensä käyttää käyttäjän selaimen oletuskokoa eli 1em. Kirjasimen kokoa ei pidä määrätä px-yksiköissä koska pikselien koko vaihtelee näyttöjen koon ja tarkkuuden mukaan.
- font
- font-family
- Värin ja
taustavärin ominaisuudet
(esimerkki)
- color
- background-color
Määriteltäessä taustaväri pitää muistaa määrätä myös tekstin väri (color).
- background-image
- background-repeat
- background-attachment
- background-position
- background
- Tekstin ominaisuudet (esimerkki)
- Elementin raja, täyte ja marginaali (esimerkki)
- Muut elementin
ominaisuudet (esimerkki)
- width
- height
- float
- clear
- display
- Esim. display:n käytöstä yksinkertaisessa XML-dokumentissa.
- white-space
- Listan ominaisuudet (esimerkki)
Lisätietoja
- Style Sheets in HTML documents
- External style sheets (persistent, preferred, alternate)
- Alternative Style: Working With Alternate Style Sheets
- Alternative style sheets
- How to create a user style sheet, http://www.squarefree.com/userstyles/user-style-sheets.html
- CSS2 syntax and basic data types
- HTMLHelp, "RGB Color Values"
- Gernot Metze, "Color Tables"
- Web Developer Extension

