Selektorji so osnova CSS-a!
Selektorji niso nujno kar enaki elementom v izvornem dokumentu. Pravzaprav so lahko selektorji dokaj kompleksni vzorci. Naloga CSS agenta je, da za vsak element izvornega dokumenta najde selektor, ki mu ustreza (če selektor sploh obstaja!). Pri iskanju ustreznega selektorja ne pozabite na velikost črk! Če je izvorni dokument XML, potem je velikost pomembna, če pa je izvorni dokument HTML, velikost pač ni pomembna!
| vzorci |
VZOREC | POMEN
------------------------------------------------------------------------
* | ustreza vsakemu elementu
E | ustreza elementu E
E F | ustreza elementu F, ki je znotraj elementa E
E>F | ustreza elementu F, ki je otrok elementa E
E+F | ustreza elementu F, ki neposredno sledi elementu E in imata oba
| istega očeta
E:link | ustreza elementu E, če je to povezava, ki še ni bila obiskana
E:hoover | ustreza elementu E, če je to povezava, ki je že bila obiskana
E[abc] | ustreza elementu E z atributom abc
E[abc="nekaj"] | ustreza elementu E z atributom abc, ki ima vrednost nekaj
E[abc~="nekaj"]| ustreza elementu E z atributom abc, ki vsebuje seznam vrednosti
| izmed katerih je vsaj ena enaka nekaj
E#nekaj | ustreza elementu E z atributom ID, ki ima vrednost nekaj
E.nekaj | velja samo za HTML dokumente in določa tisti element E, ki ima
| atribut class enak nekaj (<E class="nekaj">)
|
Če ima več selektorjev isti deklaracijski blok, jih lahko združimo, tako, da jih ločimo z vejico.
| Ta CSS | je enakovreden temu: |
H1 { color: blue }
H2 { color: blue }
H3 { color: blue }
H4 { color: blue }
|
H1, H2, H3, H4 { color: blue }
|
Včasih je potrebno CSS agentu povedati, naj vse elemente tipa A, ki se nahajajo znotraj tipa B, prikaže na poseben način. Recimo, da želimo naslove in programsko kodo v modri barvi. Na ta način se bo programska koda lepo videla v črnem tekstu:
| Modri naslovi in programska koda [Ogled] |
H1 { color: blue }
CODE { color: blue }
|
Kaj pa tedaj, ko je programska koda znotraj naslova (kot je to v drugem naslovu v podanem primeru). V tem primeru pa želimo to programsko kodo v recimo, črni barvi, ki bo tako izstopala iz modrega naslova:
| Kaj če je programska koda vsebovana v naslovu [Ogled] |
H1 { color: blue }
CODE { color: blue }
H1 CODE { color: black } /* če je programska koda v naslovu, naj bo črna! */
|
Pazite pri uporabi vejice oz. presledka. Če med selektorjema uporabite vejico, ju s tem združite (kot je vidno zgoraj). Če pa med njima ni vejice, pomeni, da želite določiti vsebovane elemente oz., da naj CSS agent išče relacije med elementi |
Tudi tukaj bomo govorili o situaciji, kjer so pomembne relacije elementov v dokumentu.
Vsi elementi <p>, ki so otroci elementa
<div> naj bodo rdeče barve! |
DIV > P { color: red }
|
Če imata E1 in E2
istega očeta in se E2 nahaja naposredno za
E1 potem naj bo modre barve |
E1 + E2 { color: blue }
|
Opisan operatorja (za delo z otroci elementov) v večini produktov še nista implementirana! |
Tudi za te velja, da jih trenutni brkljalniki še ne poznajo, zato jih ne bom
podrobneje opisoval. Poznajo pa atribute |
V tabeli na vrhu poglavja smo spoznali, da lahko nek element določimo tudi na
osnovi njegovih atributov. V trenutnih implementacijah CSS je to pravzaprav omejeno
na dva atributa in to sta atributa class in
ID.
| Uporaba atributov class in ID ([Ogled]) |
<html>
<style type="text/css">
/* vsi el. div z atr. class="div1" naj bodo rdeči */
div.div1 { color: red; }
/* vsi el. div z atr. class="div2" naj bodo modri */
div.div2 { color: blue; }
/* vsi el. div z atr. id="div1" naj bodo zeleni */
div#div1 { color: green; }
/* vsi el. div z atr. id="div2" naj bodo rumeni */
div#div2 { color: yellow; }
/* POZOR! vsi elelementi z atr. class="div3" naj bodo zlati */
.div3 { color: gold; }
</style>
<body>
<div class="div1"> div class="div1" </div>
<div class="div2"> div class="div2" </div>
<div class="div3"> div class="div3" </div>
<div ID ="div1"> div ID="div1" </div>
<div ID ="div2"> div ID="div2" </div>
<div ID ="div3"> div ID="div3" </div>
<div class="div2"> div class="div2" </div>
<div ID ="div1"> div ID="div1" </div>
<div class="div3"> div class="div3" </div>
<div class="div2"> div class="div2" </div>
<p class="div3"> p class="div3" </p>
<h1 class="div3"> h1 class="div3" </h1>
</body>
</html>
|
Opozoril bi predvsem na zadnje pravilo |
Pri univerzalnem selektorju bi opozoril še na majhno podrobnost. Povsem na vrhu
smo kot univerzalni selektor spoznali zvezdico (*). Torej bi v primeru moralo
pisati |
:link,
:visited,
:hover,
:active,
:focus,
Tem atributom pravim psevdo atributi, ker niso zapisani v dokumentu samem, temveč
so odvisni od uporabe dokumenta. Vse se navezujejo na HTML element |
V tem primeru lahko vidite uporabo
atributa :hover, če se z miško postavite na povezavo!
| Uporaba atributa :hover ([Ogled]) |
<html>
<style type="text/css">
:hover { color: red; font-size:200%; }
</style>
<body>
<div>
Tole je neka povezava, na katero bo vplival atribut ':hover'.
</div>
<div>
CSS je zapisan kot ':hover { color: red; font-size:200%; }'
</div>
<div><a href="http://www.matjazev.net">
Z miško se postavite na tole povezavo!
</a></div>
</body>
</html>
|