Für den IE probiere ich's gleich mal aus...
Also: Daß der IE ":hover" nur bei Anchors kennt, kann ich erstmal nicht nachvollziehen (möglicherweise mangels Experimentierbasis: Microsoft hatte mit dem Ding ja dermaßen viel Scheiße gebaut - unter anderem, daß man immer nur eine Version auf einem System haben kann -).
Allerdings benötigt der IE (in der aktuellen Fassung) noch IRGENDEINE Füllung des spans - z.B. " ":
...Ach ja: Und ich hatte es beim Experimentieren selbst schon wieder verkompliziert...
...Und noch einer: Natürlich werden für verschiedene ListItems verschiedene IDs vergeben. Das hier war nur ein Demo-Beispiel, daß es so geht.
Das Padding dagegen definiert man einmalig für den Elementetyp.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<style>
ul
{
border: 1px solid black;
}
li
{
border: 1px solid blue;
}
.icon.holzi
{
padding: 0 200px 0 0;
border: 1px solid red;
}
#test {background: url("img/papier.png");}
#test:hover {background: url("img/background-stein.jpg");}
</style>
</head>
<body>
<ul>
<li class="icon holzi"><span id="test"> </span></li>
<li class="icon holzi"><span id="test"> </span></li>
<li class="icon holzi"><span id="test"> </span></li>
</ul>
</body>
</html>
Ach ja... Nochwas: Ich habe jetzt doch noch einen IE6 ausprobiert, dort passiert ja ÜBERHAUPT nichts bei ":hover"! Also. Auch nicht, wenn ich den span gegen einen Anchor tausche! Kann mir jemand einen Tip geben, was für den falsch daran ist?
So, für den alten IE6 kann ich bestätigen, daß ":hover" nur mit Anchor funktioniert.
Allerdings nehme ich mal an, daß es in der Anwendung hier letztlich doch sicherlich um genau ein paar Anchors gehen wird, oder? Sowas ähnliches - nehme ich mal an - hatten sich die Leute bei Microsoft wohl zunächst auch gedacht...
Außerdem verarbeitet der IE6 das Padding falsch. Es funktioniert allerdings, wenn man ihm folgendes vorsetzt:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<style>
ul {border: 1px solid black;}
li {border: 1px solid blue; }
a {border: 1px solid red; }
#test {background: url("img/papier.png");}
#test:hover {background: url("img/background-stein.jpg");}
img {width: 200px; height: 20px; border: none; vertical-align: top;}
</style>
</head>
<body>
<ul>
<li class="icon holzi"><a href="" id="test"><img src="img/space.gif"/></a></li>
<li class="icon holzi"><a href="" id="test"><img src="img/space.gif"/></a></li>
<li class="icon holzi"><a href="" id="test"><img src="img/space.gif"/></a></li>
</ul>
</body>
</html>
DAS allerdings wird erstmal wieder vom Firefox falsch dargestellt (der Anchor ist zu wenig "hoch"). Es bleibt aber wohl die Möglichkeit einer Browserweiche.
Und irgendwie erinnere ich mich, gerade erst ein Menü in meiner Firma korrigiert zu haben, das zuerst extrem dreckig (redundant, verkompliziert) ausgeführt war, aber dann doch auf ALLEN üblichen Browsern (Opera, Firefox, IE6 und IE7) lief.
Das wächst sich allerdings schon wieder aus. Ich denke, als Anregung reicht das erstmal.