Axel Richter: Relatives width zum Elternelement im M$IE

Beitrag lesen

Hallo,

Im Folgenden mal der wichtige Teil des Codes:

<div id="navigation">
   <ul>
    <li><a href="/">Willkommen</a></li>
    <li><a href="/news.php">News</a></li>
    <li><a href="/guestbook.php">Gästebuch</a></li>
   </ul>
</div>

Und im Stylesheet:
#navigation a {
    padding:5px 6px 5px 10px;
    display:block;
    white-space:nowrap;
    margin:0;
}

Ein Element, welches normalerweise ein Inline-Element ist, und mit display Block formatiert wird, verhält sich etwas anders als ein HTML-Block-Element. Unter anderem hat es normalerweise _keine_ Standard-Margins. Du kannst das margin:0 also wieder wegnehmen.

Hier macht der IE nun wirklich etwas komisches bei der Berechnung der Breite der Block-A-Elemente. Eine Lösung wäre, für das DIV-Element ein fixe Breite festzulegen und für die A-Elemente dann width:100%. Das willst Du aber nicht. Der Fehler bei der Breitenberechnung liegt anscheinend noch im Box-Model-Bug und der Rahmenberechnung begründet. Wenn man nämlich den LI-Elementen Rahmen gibt, stimmt es plötzlich wieder. Solltest Du also mit einem Rahmen in Hintergrundfarbe für die LI-Elemente leben können, wäre das ein Workaround.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Liste Block-A-Elemente</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<style type="text/css">
<!--
#navigation ul {
   border:1px solid #000000;
   list-style-type:none;
   padding:0;
   margin:0;
}
#navigation li {
   border:1px solid white;
   padding:0;
   margin:0;
}
#navigation a {
   padding:5px 6px 5px 10px;
   display:block;
   white-space:nowrap;
}
#navigation a:focus,#navigation a:active,#navigation a:hover {
   border-top:1px solid #000000;
   border-bottom:1px solid #000000;
   border-left:5px solid #000000;
   border-right:1px solid #000000;
   padding:4px 5px;
}
-->
</style>
</head>
<body>
<div id="navigation">
   <ul>
    <li><a href="/">Willkommen</a></li>
    <li><a href="/news.php">News</a></li>
    <li><a href="/guestbook.php">Gästebuch</a></li>
   </ul>
</div>
</body>
</html>

Dieses Beispiel sieht bei mir im IE6, NN7 und Opera7.21 gleich aus.

viele Grüße

Axel