Axel Richter: first-letter im IE trotz formatierung bleibt

Beitrag lesen

Hallo,

ich habe einmal dokumentenweit:

.text first-letter

deklariert.

Was ist das?

Die Klasse: .text hat das farbattribut color:#fff;
So, nun soll die klasse .text nochmals formatiert werden wenn die Klasse in einer anderen ist:
.imp .text {
color:#000;
}

Im firefox hat nun die komplette schrift die gewünschte farbe schwarz auch der große erste "letter" ist schwarz, nur im IE nicht, da bleibt er weiss! Wieso?
Ich habe dann mal:
.imp .text:first-letter {color:#000;} probiert interessiert dem IE nicht.
Wie dann? Ich möchte das im IE der "first-letter" auch die farbe annimmt.
Hat jemand einen tip?

Dein erster Satz war etwas irreführend, aber ich nehme an, Du hast so etwas gemacht:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
        "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
<head>  
<title>IE CSS-Selektor Spezifitätsproblem</title>  
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
<style type="text/css">  
.text { color:#00F; }  
.text:first-letter { font-size:2em; }  
.imp .text { color:#F00; }  
</style>  
</head>  
<body>  
<p class="text">Test</p>  
  
<div class="imp">  
<p class="text">Test</p>  
</div>  
</body>  
</html>  

In der Tat scheint hier der IE ein Problem mit der CSS-Selektor Spezifität zu haben. Obwohl .imp .text viel spezifischer ist als .text überschreibt die color Definition nicht die von .text, jedenfalls nicht für .text:first-letter. Auch eine explizite Definition für .imp .text:first-letter greift nicht.

Irgendein Bug bei der Spezifitätsberechnuing liegt hier vor. Macht man nämlich die allgemeine Definition für .text spezifischer, dann funktioniert es plötzlich:

  
body .text { color:#00F; }  
.text:first-letter { font-size:2em; }  
.imp .text { color:#F00; }  

Folgendes hilft auch:

  
* .text { color:#00F; }  
.text:first-letter { font-size:2em; }  
.imp .text { color:#F00; }  

viele Grüße

Axel