Thomas Due skrev:
> Jeg sidder lige og spekulere på hvilken rækkefølge CSS
> definitioner bliver anvendt i.
Det er fastlagt i specifikationen - se reglerne her:
<
http://www.w3.org/TR/CSS21/cascade.html>
> Der er jo umiddelbart, hvad, 4 steder css kan tildeles.
>
> tag
> id
> class
> inline style
Der er lidt flere hvis man medregner flerleddede selektorer som fx
ul.special li.
Det kan være lidt langhåret at udregne specificiviteten for en
given css-definition - du kan se en oversigt her:
<
http://www.w3.org/TR/CSS21/cascade.html#specificity>.
Men grundlæggende så vægtes inline-style altid højst. Eksempel:
<p id="x" class="y" style="color: red;">Hejsa</p>
Uanset hvad der er defineret af farveværdier for id=x og class=y,
skal teksten her være rød (dog kan et brugerdefineret css-ark
markeret som important override alt andet)
Herefter kommer værdier defineret med id. Eksempel
css:
#x { color: blue; }
.y { color: green; }
p { color: black; }
html:
<p id="x" class="y">Hejsa</p>
Teksten skal farves blå, fordi id-værdien vægtes højere end både
klasseværdien og værdien for elementet p (som før kan et
brugerbaseret css-ark markeret som important override alt).
Herefter bliver det lidt sværere at give kortfattede forklaringer
på hvordan specifiviteten beregnes. Men generelt kan man sige at jo
mere speficikt en regel er defineret (flere elementer, brug af
klasser eller pseudo-klasser), desto højere vægtes den.
"p.klasse" vægtes fx lidt højere end ".klasse" (for et p-element,
forstås), mens begge har højere specifivitet end "p".
Hvis to definitioner har samme specifivitet, vil det være den der
står sidst der vinder.
> Er den altid den samme i alle browsere?
I princippet ja. Nogle browsere (primært IE) mangler dog
understøttelse for en del selektormuligheder - de regler bliver så
bare ignoreret.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html