Viimeksi muutettu:
Tästä on myös versio
Oppilas2.html. Muuta se mieleiseksesi. Katso sitten sitä ponnahdusikkunassa. Huomaa,
että tämä on vain harjoittelusivu, enkä ole
päivittänyt sen asiasisältöä. Tähän sivuun liittyy myös tehtäväsivu
.
Edellisen luettelon kolmessa ensimmäisessä kohdassa on kyse elementin sisällä olevista, asiakirjaan upotetuista ja asiakirjan ulkopuolisista tyyliarkeista. Sitä miten niitä tulisi käyttää, tulee tarkastella CSS:n perusfilosofiasta käsin. Tarkoituksenahan on se, että elementtien esitysasua olisi mahdollisimman helppo jälkikäteen muokata.

CSS voi käyttää kolmea erityisattribuuttia.
Attribuuttia style (style="...")
elementin sisään tuleville suorille tyyliarkeille,
class (class="...") ja id
(id="...") ulkopuolisille tyyliarkeille.
Käsittelen tässä yhteydessä tarkemmin vain
attribuutin style käytön.
Jos tyyliarkkeja käytetään elementtien
sisällä käyttäen tyyliattribuuttia, kuten
esim. <TD style="border:1px solid #660033">,
menettely ei oleellisesti poikkea HTML 3.2:n
attribuuttimäärittelyistä. Tätä
menettelytapaa nimitetään englanninkielisissä
teksteissä myös rivinsisäisten tyyliattribuuttien/
tyylien käyttämiseksi (inline style sheet(
attribute)s). Jos haluat muuttaa elementin
aloitusmerkinnän sisään tekemääsi
määrittelyä, joudut etsimään sen muun
koodin seasta aivan kuin HTML 3.2 tyyliset attribuutit!
Tästä rajoituksesta huolimatta myös näillä tyyliarkeilla on perustavalaatuisia eroja HTML 3.2 elementtien ulkoasua määritteleviin attribuutteihin nähden:
properties, joka suomennetaan yleensä sanalla
ominaisuudet. Ne määritellään siten, että ensin annetaan ominaisuuden nimi ja kaksoispisteen (
:)
jälkeen sen arvo tai useita samalla kertaa annettuja
arvoja. HTML 3.2 attribuutteja voi antaa vain yhden
kerrallaan eli attribuutilla voi olla kerrallaan yksi arvo.
CSS-ominaisuuksia voi antaa yhtä aikaa kuinka paljon
tahansa kunhan yksittäiset ominaisuudet ja niiden arvot
erotetaan toisistaan puolipisteellä (;),
esim. style="color:#660033;
background-color:yellow;".Tyyliarkit ovat ikään kuin attribuuttikokoelmia.
Tässä mielessä CSS toimii aina attribuuttitasolla
riippumatta tavasta, millä tavoin elementtien ominaisuudet
määritellään. Sekaannusten
välttämiseksi käytän ilmaisua ominaisuudet
tai kirjoitan vain CSS-määrittelyistä.
Vaikka tyyliattribuutit ovat heikoin tapa
hyödyntää CSS-ominaisuuksia, ne ovat kuitenkin
käyttökelpoisia silloin, kun
määritellään elementeille absoluuttisia
paikkoja. Seuraava määrittely antaa kuvalle elementille
120 pikselin sijainnin sivun yläreunasta laskien (voit
määritellä kuvan muut arvot joko HTML 3.2
attribuuteilla tai lisätä tyyliattribuutin
sisään enemmän CSS-ominaisuuksia (![[M]](../../Kuvat/buttons/M.gif)
![[S]](../../Kuvat/buttons/S.gif)
):
<IMG src="../../Kuvat/omakuvaIso.gif"
style="position:absolute; top:120px;">
Käytä tyyliattribuutteja harkiten! Mieti ensin tarvitsetko välttämättä juuri tiettyyn kohtaan erillismäärittelyn.
Mielestäni aina on mielekästä luoda ulkopuolinen CSS-tyyliarkkitiedosto, jos tyyliarkkeja käyttäviä asiakirjoja on enemmän kuin kaksi. Laadi erillistiedostoon koko sivustossasi käytettävät perustyylit.
Ulkopuolisissa tyyliarkeissa määritellyillä
ominaisuuksilla on sama funktio kuin tyyliattribuuteilla.
Niissä annetuilla CSS-ominaisuuksilla P {color:blue;
border:1px solid blue; } on sama vaikutus kuin <P
style="color:blue; border:1px solid blue; ">, mutta
ominaisuuksia ei ole annettu elementille suoraan vaan
epäsuorasti. Jollei toisin ole erikseen
määritelty, ominaisuudet koskevat kaikkia dokumentin
kappaleita. Tyyliattribuutin kautta annetut ominaisuudet koskevat
sen sijaan vain yhtä kappaletta (![[M]](../../Kuvat/buttons/M.gif)
![[S]](../../Kuvat/buttons/S.gif)
).
Ulkopuolisten tyyliarkkimäärittelyiden vaikutus on saman tapainen kuin HTML 3.2 dokumenttien esitystyyliin vaikuttavilla attribuuteilla, mutta sillä erolla, että dokumentin runko-osassa ei tarvitse välttämättä käyttää lainkaan esitystyyliin vaikuttavia attribuutteja!
Kun käytät ulkopuolisia tiedostoja, anna tiedostolle
nimeksi esim. css_tiedoston_nimi.css ja linkitä se
HTML-tiedostoosi. Linkitys on muotoa <LINK
rel="stylesheet" type="text/css"
href="tyyliarkkitiedosto.css">. Voit
linkittää joko paikallisiin hakemistoihin tai
käyttää vaikka toisten tekemiä
tyyliarkkitiedostoja ja linkittää niihin. Vapaasti
käytettäviä CSS-tiedostoja löydät
ainakin W3C organisaation sivuilta (ns. core stylesheets) ja ne
ovat muotoa <LINK rel="stylesheet" type="text/css"
href="http://www.w3.org/stylesheets/Core/Modernist">
Ulkopuolisiin tiedostoihin voi viitata myös käyttäen ns. tuontisääntöä (import rule), jota käsittelen edempänä.
Upotetuilla tyyliarkeilla tarkoitetaan asiakirjan HEAD-osaan
liitettyjä tyyliarkkeja. Ominaisuuksien
määrittelyt ovat samoja, joita käytetään
ulkopuolisissa tyyliarkkitiedostoissa. Ne liitetään
asiakirjaan ennen runko-osaa (BODY)
<HEAD></HEAD> koodien väliin eli
"upotetaan" (embed) asiakirjaan käyttäen
STYLE-elementtiä.
Suosittelen, että laitat
tähän määrittelyyn vain sellaiset tiedot,
joita käytät yhdessä asiakirjassa. Voit
myös ohittaa muille sivuille ulkopuolisissa CSS-tiedostoissa
antamiasi ominaisuuksia. Esimerkiksi haluat tiettyyn
asiakirjaan muista poikkeavan taustakuvan ja -värin. Sinun
ei tarvitse määritellä kaikkea uusiksi.
Riittää, että annat uudet ominaisuudet vain
taustalle. Muut arvot jäävät voimaan. Seuraavan
esimerkin ominaisuudet antavat asiakirjalle keltaisen
pohjavärin ja uuden taustakuvan, joka on keskitetty sivulle
ja joka ei toistu (näet esimerkissä myös
tyyliarkin oikean sijoittelun - mallissa on mukana myös
linkitetty tiedosto, josta siis haetaan muut ominaisuudet (![[M]](../../Kuvat/buttons/M.gif)
![[S]](../../Kuvat/buttons/S.gif)
):
<DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Otsikko</TITLE>
<LINK rel="stylesheet" type="text/css"
href="tyyliarkkitiedosto.css">
<STYLE type="text/css">
<!-- /* määrittelyt ovat
HTML-kommenttien sisällä, jotta vanhat selaimet
ohittaisivat ne */
body {background: yellow url(uusikuva.gif) no-repeat center;}
/* selostan toisessa yhteydessä tämän
merkityksen */
-->
</STYLE>
</HEAD>
<BODY>
...
Valitettavasti Netscape 4.0x selaimilla on
kuitenkin niin suuria toimintavaikeuksia, että jos haluaa
optimoida em. selainten maksimaalisen tukemisen ja
määrittelyjen helppouden, sinun tulee joiltakin osin
ohittaa selain. Selaimen ohittaminen onnistuu helposti
käyttämällä ns. tuontisääntöä
(@import), sillä kyseiset selaimet eivät
ymmärrä sitä. Samalla näet myös, miten
tuota sääntöä käytetään.
Ensimmäisessä esimerkissä sääntö
liitetään STYLE-elementtiin (![[M]](../../Kuvat/buttons/M.gif)
![[S]](../../Kuvat/buttons/S.gif)
):
<LINK rel="stylesheet" type="text/css"
href="NS_4_0x.css">
<STYLE type="text/css">
<!--
@import url(tyyliarkkitiedosto.css); /* tiedostosta
NS_4_0x.css
määrittelyt, jotka toimivat hyvin NS 4.0x
selaimissa; @import
säännön avulla haetaan
ulkopuolisista tyyliarkkitiedostoista sellaisia asioita, jotka
kaatavat NS 4.0x selaimen; tuontisääntöjä voi
olla useita, mutta kaikkien tulee olla ennen muita
määrittelyjä; huomaa lopussa oleva ;
merkki -
ilman sitä selain ei jatka eteenpäin lukemaan
jäljessä tulevia määrittelyitä;
*/
/* dokumenttikohtaiset määrittelyt */
body
{font-family: Verdana, Arial, Helvetica, sans-serif;
font-size:x-small;
padding-top: 10px;
padding-left: 32px;
padding-right: 10px;
padding-bottom: 10px;
margin: 0px;}
h2
{color: #660033;font-family:Verdana, Arial, Helvetica,
sans-serif;} /* muista, että tämä ei kumoa
aiemmin annettuja ominaisuuksia muilta kuin uudelleen
määritellyiltä kohdin */
td
{font-family: Verdana, Arial, Helvetica, sans-serif;
font-size:x-small;}
-->
</STYLE>
Edellinen tapa on tehokkain. Se tarjoaa mahdollisuuden antaa
Netscape 4.0x selaimille aivan omat ominaisuudet, jotka sitten
ohitetaan dokumenttiin upotetun tuontisäännön
avulla. Jollei toisin ole erikseen määritelty
ulkopuolinen tyylimäärittely koskee kaikkia kappaleita,
kun suora määrittely vain yhtä kappaletta (![[M]](../../Kuvat/buttons/M.gif)
![[S]](../../Kuvat/buttons/S.gif)
).
Toinen tapa ohittaa NS 4.0x ja samalla käyttää on tuontisääntöä, on laittaa se toisen CSS-tiedoston alkuun seuraavan esimerkin tapaan:
/* tyyliarkkitiedosto - tämä on
päätyyliarkkitiedosto; on hyvä tapa laittaa aina
tyyliarkkitiedoston alkuun lyhyt kuvaus tyyliarkkitiedoston
sisällöstä */
@import url(toinen_ulkopuolinen_tyyliarkkitiedosto.css); /*
tuontisääntöjä voi olla useita, mutta ne
kaikki pitää olla tiedoston alussa; muista laittaa ;
merkki! */
body {...} /* muut määrittelyt normaaliin tapaan
*/
Muista, että aina kun käytetään ns.
tuontisääntöä, se tulee sijoittaa ennen
yksittäisiä ominaisuuksien antamisia ja se
käsitellään ensimmäiseksi. Jos
tuontisääntöjä on useita, selain käy ne
järjestyksessään lävitse. Varoitus: MS IE lukee myös väärään
paikkaan sijoitetut tuontisäännöt. Mutta Opera ja
tuleva Netscape eivät niitä lue väärin
sijoitettuna, joten laita sääntö aina oikeaan
paikkaan! Kokeile mallisivua - siinä ei pitäisi
näkyä tyyliarkin tuomia muutoksia! (![[M]](../../Kuvat/buttons/M.gif)
![[S]](../../Kuvat/buttons/S.gif)
).
Käytät sitten minkä
tyylisiä CSS-ominaisuuksia tahansa, luot ominaisuuksista
kuvauksen (declaration). Kuvaus on kahden
kaarisulun eli lohkon (block) välissä
({}) ilmoitetut ominaisuudet ja niiden arvot. Voit
useissa tapauksissa valita sen, esitätkö ominaisuudet
ja niiden arvot yksitellen vai kokoatko jotkut
pikakirjoitteeksi (shorthand properties).
Yleensä taustan ominaisuudet esitetään
pikakirjoitteina, esim. seuraavaan tapaan (![[M]](../../Kuvat/buttons/M.gif)
![[S]](../../Kuvat/buttons/S.gif)
):
body {background: white
url(./Taulut/kierrevihko.gif) repeat-y 2px
0px;}
Tarkasti ottaen ennen puolipistettä on vain yksi
ominaisuuksien ja niiden arvojen kuvaus. Kuvaus on aina
kuvauslohkon (declaration-block) sisällä.
Edellisessä esimerkissä kuvauslohkon sisällä
oli vain yksi kuvaus. Seuraavassa esimerkissä kuvauslohko
sisältää useita kuvauksia. Laitan seuraavassa
esimerkissä selvyyden vuoksi yksittäiset kuvaukset
allekkain. Yksitellen esitettynä samojen ominaisuuksien
kuvauslohko näyttäisi tältä (en
tässä yhteydessä käy lävitse, mitä
yksittäiset ominaisuudet tarkoittavat; katso myös kaavio kohdasta
kuvauslohko
(![[S]](../../Kuvat/buttons/S.gif)
)):
body
{background-color: white;
background-image: url(./Taulut/kierrevihko.gif);
background-repeat: repeat-y;
background-position: 2px 0px;}
Kaikkia ominaisuuksia ei voi esittää
pikakirjoitteena, mutta jos voi, periaate on sangen
yksinkertainen:
Pikakirjoitteessa ominaisuuden arvot
laitetaan peräkkäin, väliin
jätetään tyhjää (space) ja
arvojen antaminen päätetään
puolipisteellä (;). Myös
aliominaisuudet voidaan toteuttaa pikakirjoitteena, esim.:
body {border-top: 1px #660033 solid;}
/* vertaa sitä seuraavaan kuvauslohkoon */
body {border: 1px #660033 solid;}
Voit tehdä kuvauslohkoja vaikka NotePadilla. Kaikki käytettävissä olevat opastinsovellukset eli velhot ovat puutteellisia, mutta niilläkin saa annettua perusominaisuuksia. Ks. lopuksi liitesivu sovelluksista, joissa käsittelen freeware ja shareware ohjelmia.