1 2 3 4 5 6 7 8 9 10 11 12 E L S Copyright

Harjoittelu: Oppilaan harjoitteluversio 2

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[S].

Viimeksi muutettu:

Aiheet

Yleistä

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.

Cascading Style Sheets

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.

Tyyliattribuutteihin sijoitetut tyyliarkit

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:

  1. Määrittelyt voivat olla paljon monipuolisempia. Tyyliarkkien sisällä olevia määrittelyjä ei kutsuta englanninkielisissä teksteissä attribuuteiksi vaan niistä käytetään ilmaisua 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;".
  2. HTML 3.2 dokumenteissa ei voi antaa tietylle elementille kuin vain rajoitetun määrän attribuutteja. CSS-ominaisuudet eivät ole sidonnaisia tiettyihin elementteihin kuten HTML 3.2 attribuutit. Tosin on tilanteita, että kaikkia CSS-ominaisuuksia ei oteta huomioon (käsittelen tätä näkökulmaa aivan tämän sivun loppu osassa).

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][S][Pw]):

<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.

Ulkopuoliset tyyliarkit

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][S][Pw]).

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ä.

Upotetut tyyliarkit ja ns. tuontisääntö

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][S][Pw]):

<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][S][Pw]):

<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][S][Pw]).

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][S][Pw]).

Kuvaukset

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][S][Pw]):

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][Pw])):

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.