Rasmus Kjær skrev:
> Jeg har selv haft lidt problemer med det. Jeg har fundet ud af at
> det ikke er ligemeget hvilken raekkefoelge du skriver din css.
Det er korrekt. Kaskade-princippet i css (Cascading Style Sheets),
betyder at den senest angivne oplysning "vinder" hvis der er konflikt og
de to selektorer har samme specificivitet.
Hvis man skriver
body{ color: red; }
body{ color: blue; }
- er det logisk nok at den sidste linje vinder (og teksten bliver blå).
Skriver man
#menu{ color: red; }
.menu{ color: blue; }
- og har følgende html: <div id="menu" class="menu">, så vil den første
linje "vinde", fordi id-definitioner binder stærkere end
klassedefinitioner.
I tilfældet med pseudoklasser på links - a:link, a:hover etc., binder de
alle lige stærkt. Derfor er rækkefølgen væsentlig.
a:link beskriver et helt almindeligt link, uanset "omstændighederne"
mht. museplaceringen, evt. klik og evt. tidligere besøg på adressen. Det
er derfor den mest generelle af de fire pseudoklasser, og den man vil
placere først (så den kan blive overtrumfet af efterfølgende
pseudoklasser).
a:visited beskriver links man allerede har klikket på (eller rettere
links hvor browseren allerede har besøgt adressen). Det er en delmængde
af "alle links", men den er stadig uafhængig af hvor musen er placeret
og om hvorvidt der klikkes på linket. Derfor bør den placeres som nr. 2
i rækken.
a:hover beskriver et link når musemarkøren befinder sig over det
(svarende til javascripthændelsen onmouseover). Det kan almindeligvis
kun gælde ét link ad gangen, og hvis man vil have vist noget særligt i
netop denne situation, skal hover-betegnelsen derfor komme efter de to
førnævnte klasser.
a:active beskriver endelig et link der bliver aktiveret - typisk ved et
museklik, men det kan også være via tastaturet. Når linket aktiveres med
musen (dvs. i næsten alle tilfælde), er :hover-klassen i forvejen aktiv.
Hvis man vil kunne skelne mellem et link der "bare" har musen over sig,
og så et link der klikkes på, skal :active-definitionen derfor angives
som den sidste af de fire linkklasser.
Alt i alt giver det altså rækkefølgen :link, :visited, :hover, :active.
Nogle foretrækker at have en remse eller lignende til at holde styr på
rækkefølgen. Jeg foretrækker i stedet at være bevidst om hvad hver af de
fire klasser dækker over - så giver rækkefølgen sig selv.
> Er der forskel paa "a" og "a:link"?
Ja, en smule. A-elementet kan både bruges til links (som <a href="foo">)
og som ankre (<a name="foo">). Selektoren a fanger alle a-elementer,
mens a:link kun fanger links.
a:link er også et hak mere specifikt end a
Eksempel:
a:link{ color: red;}
a{ color: blue; }
Her vil links være røde, fordi a:link vægtes højere end a.
I moderne html er der dog ingen grund til at bruge <a name="foo"> - det
er bedre at anvende id-parameteren som anker (fx <h2 id="foo">). Alle
nyere browsere kan fint anvende ankre baseret på id-værdier.
--
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