# CSS

|  |  |
| --- | --- |
|  |  *See artikkel räägib märgenduskeelest; mõnikord kasutatakse lühendit CSS ka murdskriptimise kohta, arvutimängu kohta vaata artiklit Counter-Strike: Source.* |

---

**CSS** (ingliskeelne lühend sõnadest *Cascading Style Sheets* – kaskaadlaadistik) on küljendamisel kasutatav märgistuskeel, milles märgitakse üles peamiselt veebilehtede kujundust. CSS leiab enim kasutust HTML- ja XHTML-lehtede kujunduse loomisel, samuti XML-, SGML-, XUL- ja SVG-lehtedel.

CSS-i kombineerimine XHTML-iga võimaldab lehe sisu ja kujunduse teineteisest eraldada. See annab parema ülevaate veebilehe ülesehitusest, on abiks veebilehe hilisemal muutmisel ning võimaldab luua laadilehti eri kasutustüüpide jaoks, sh printimiseks. Eraldi CSS-faili abiga on võimalik ühtlustada mitme veebilehe vormindamist, mis struktuurses sisus vähendab komplektsust ja kordamist; ning .css faili vahemällu salvestamine võimaldab kiirema laadimise lehtede vahel, mis on ühesuguses vormingus. Lihtsamaks muutub kogu veebilehe haldus ja eelkõige kujunduse muutmine.

## Süntaks

CSS-il on lihtne süntaks, milles kasutatakse ingliskeelseid märksõnu erinevate laadiomaduste nimede täpsustamiseks.

**Laadileht**

Laadileht koosneb reeglite loendist. Iga reegel või reeglite hulk koosneb ühest või rohkemast selektorist ja deklaratsiooni blokist.

### Selektor

Selektor deklareerib, mis märgenduse juurde laadi rakendatakse.

Selektorid võivad olla rakendatud:

* spetsiifilise tüübi kõikidele elementidele
* elementidele, mis on täpsustatud atribuutiga, konkreetsemalt:
	+ id-le: unikaalsele identifikaatorile dokumendi sees,
	+ klassile: identifikaatorile, mida võivad kasutada dokumendi mitu elementi,
* elementidele sõltuvalt sellest, kuidas nad on paigutatud dokumendi puus.

Klassid ja id-d on tõstutundlikud, algavad tähtedega ja võivad sisaldada tähe- ja numbrimärke, sidekriipse ja alakriipse. Id-d märkitakse trellidega `#id` ja klassi punktiga `.classname`. Ühele selektorile saab lisada mitu atribuuti.

**Pseudo klassid**

Pseudo klasse võib kasutada CSS selektorites, et võimaldada formatiseerimine teabe põhjal, mida dokumendi puu ei sisalda. Üks enim levinud näide on pseudo klass `:hover`, mis tuvastab sisu ainult kui kasutaja osutab elemendile hiire kursoriga. See lisatakse selektorile `a:hover` või `#elementid:hover`.

Pseudo klass klassifitseerib dokumendi elemente nagu `:link` ja `:visited` samas kui pseudo element tuvastab osalise elemendi nagu `::first-line` või `::first-letter`.

**Täpsus ja paindiluks**

Selektoreid võib ühendada mitmel eri moel, et saavutada täpsust ja paindlikust. Mitu selektorit võib kombineerida loendisse nende koha, tüübi, id, klassi või mingi muu kombinatsiooniga. Järjekord on oluline. Näiteks `div .myClass {color: red;}` viitab kõigile elementidele millel on klass myClass, mis on div elemendi sees kui aga `.myClass div {color: red;}` viitab div elementidele, mis on elementide myClass sees. Samas `div.myClass {color : red;}` viitab div elementidele millel on klass myClass.

**Kokkuvõte selektori süntaksist**

Allolev tabel annab ülevaate kõikide CSS-i versioonide selektoritest. Tulbas "CSS-i versioon" on kirjas versioon, millal selektorit esmakordselt defineeriti.

| Muster | Tähendus | CSS-i versioon |
| --- | --- | --- |
| E | element tüübist E | 1 |
| E:link | hüperlingiks olev element E, mis on veel külastamata | 1 |
| E:visited | hüperlingiks olev element E, mida on külastatud | 1 |
| E:active | element E, mille kasutaja aktiveeris | 1 |
| E::first-line | elemendi E esimene renderdatud rida | 1 |
| E::first-letter | elemendi E esimene renderdatud täht | 1 |
| E.foo | elemendi E klassiks on "foo" | 1 |
| E#foo | elemendi id-ks on "foo" | 1 |
| E F | F on elemendi E järglane | 1 |
| \* | kõik elemendid | 2 |
| E[foo] | element, millele määrati atribuut "foo" | 2 |
| E[foo="bar"] | element E, mille atribuudi "foo" väärtus on täpselt võrde väärtusega "bar" | 2 |
| E[foo~="bar"] | element E, mille atribuudi "foo" väärtuseks on rida tühikuga eraldatud väärtusi, millest üks on täpselt võrdne väärtusega "bar" | 2 |
| E:first-child | element E on oma vanema esimene laps | 2 |
| E:last-child | element E on oma vanema viimane laps | 2 |
| E:lang(fr) | element E keeles "fr" | 2 |
| E::before | genereeritud sisu enne elementi E | 2 |
| E::after | genereeritud sisu pärast elementi E | 2 |
| E > F | element F on elemendi E laps | 2 |
| E + F | elemendile F eelneb vahetult element E | 2 |
| E[foo^="bar"] | element E, mille atribuudi "foo" väärtus algab sõnega "bar" | 3 |
| E[foo$="bar"] | element E, mille atribuudi "foo" väärtus lõpeb sõnega "bar" | 3 |
| E[foo\*="bar"] | element E, mille atribuudi "foo" väärtus sisaldab alamsõnet "bar" | 3 |
| E:root | element E on dokumendi juurelemendiks | 3 |
| E:nth-child(n) | element E on oma vanema n-is laps | 3 |
| E:nth-last-child(n) | element E on oma vanema n-is laps (loendamine toimub viimasest elemendist) | 3 |
| E:nth-of-type(n) | element E on n-is E-tüüpi element | 3 |
| E:nth-last-of-type(n) | element E on n-is E-tüüpi element (loendamine toimub viimasest elemendist) | 3 |
| E:first-of-type | element E on esimene E tüüpi element | 3 |
| E:last-of-type | element E on viimane E tüüpi element | 3 |
| E:only-child | element E on oma vanema ainuke laps | 3 |
| E:only-of-type | element E on ainuke E tüüpi element | 3 |
| E:empty | elemendil E ei ole ühtki last | 3 |
| E:target | element E on dokumendile viitava URI sihtmärk | 3 |
| E:enabled | kasutajaliidese element E, mille kasutamine on lubatud | 3 |
| E:disabled | kasutajaliidese element E, mille kasutamine ei ole lubatud | 3 |
| E:checked | kasutajaliidese element E, mis on valitud | 3 |
| E:not(s) | element E, mis ei osutu valituks lihtsa selektoriga s | 3 |
| E ~ F | elemendile F eelneb element E | 3 |

### Deklaratsioon

Deklaratsiooniväli sisaldab deklaratsioonide listi, mis pannakse sulgudesse. Iga deklaratsioon koosneb atribuutist, koolonist(:) ja väärtusest. Kui deklaratsiooniväljal on mitu väärtust, tuleb need üksteisest eraldada semikooloniga(;).

### Kasutamine

Enne CSS-i, kõik ettekandelised atribuudid kasutati HTM-märgenduse sees. CSS annab autoritele võimaluse paigutada suurema osa sellest informatsioonist teise faili, laadilehele, mis lihtsustab HTML-dokumenti.

Näide selle kohta, kuidas oli HTML-is defineeritud punast värvi pealkiri.

```
<h1><font color="red"> Esimene peatükk </font></h1>

```

Sama näide, aga kasutades CSS-i.

```
<h1 style="color:red"> Esimene peatükk </h1>

```

Eelis ei ole eriti selge, kuid see muutub selgemaks, kui CSS-i laadi omadused on paigutatud eraldi CSS-faili.
Eeldame, et dokumendis on järgmine laadielement:

```
<style>
<h1 {color: red;}
</style>

```

Kõik dokumendis olevad h1 pealkirjad muutuvad punaseks, ilma et teha HTML-failis mingeid muudatusi. Kui autor soovib muuta kõik h1 pealkirjad siniseks, siis ta peab muutma värvi punasest siniseks ehk

```
<style>
<h1 {color: blue;}
</style>

```

Laadid võivad olla paigutatud ka eraldi CSS-faili ning laaditud, kasutades järgmist süntaksi

```
<link type="text/css" rel="stylesheet" href="path/to/file.css"/>

```

## CSS-i eelised

**Sisu ja vorm on eraldatud**

CSS kergendab sisu erinevates formaatides avaldamist nominaalsete parameetrite põhjal. Nominaalsete parameetrite hulka kuuluvad konkreetse kasutaja eelistused, erinevad veebibrauserid, selle seadme tüüp, mida kasutatakse sisu kuvamiseks, kasutaja geograafiline asukoht ja palju muud.

**Terviklikkus**

CSS võimaldab mõjutada ja disainida veebilehe elemente sisu puutumata. Olukorras, kus on vaja muuta või lisada elemente, võib muudatusi teha globaalses laadilehes. See säästab aega ja raha.

**Ülekandekiirus**

Seespidine või välispidine laadileht täpsustab laade mitmele HTML-elemendile, mille juures on märgitud vastav klass, tüüp või relatsioon. See tähendab, et veebilehe koostaja ei pea iga elemendi juures kirjutama laadispetsifikatsioone, piisab ühest korrast. See on efektiivsem kui iga elemendi juures informatsiooni kordamine.

Kui veebilehe kujundus on paigutatud ühte faili, siis peab kasutaja selle alla laadima vaid ühe korra. Teised veebilehed näevad juba varem alla laaditud laadilehte.

**Kättesaadavus**

Ilma CSS-ita peaksid disainerid paigutama kogu informatsiooni ühte HTML-faili, mis raskendaks lehe arusaamist halva nägemisega inimeste jaoks.

## Eestikeelne termin

CSS-i ingliskeelse täistermini lahtiseletus on "kaskaadlaadistik" . Toortõlget "kaskaadsed stiililehed" kohtab harvemini.

## Vaata ka

* XSL

## Viited

## Välislingid

* W3C CSS-i koduleht: CSS-i spetsifikatsioonid ja juhised.
* HTML, XHTML ja CSS – artiklid, juhendid, vahendid
* Instant CSS Code