IE5.0 und absolute Positionierung
Simon
- css
Hallo zusammen,
ich habe eine Ungereimtheit, an der ich mir seit Stunden die Zähne ausbeiße. Innerhalb eines DIV-Tags, das absolut positioniert ist, habe ich ein IMG, welches ebenfalls absolut positioniert ist (somit absolut innerhalb des DIV-Koordinatensystems). Das DIV-Tag hat eine definierte Breite und Höhe, das IMG ist per right:0px; bottom:0px; in die rechte untere Ecke verschoben. Jetzt stelle ich bei manchen Kombinationen von Breite und Höhe beim DIV fest, daß IE5.0 das IMG nicht ganz nach unten schiebt, sondern 1 Pixel Platz läßt. Ich habe das zur Demonstration mal isoliert:
http://www.tagammeer.com/ie5/test.html
Das linke, grüne DIV ist jeweils 240 Pixel hoch und breit, da klappt die Positionierung wie gewünscht. Das rechte, rote DIV ist 1 Pixel höher, und da bleibt unten genau 1 Pixel Rand übrig.
Firefox 1.5 und Safari (aktuellste Version) machen's richtig, die Seite wird mir vom W3C-HTML- und -CSS-Validator genehmigt.
Ist das ein Bug? Weiß jemand eine Möglichkeit, ihn abzustellen (ich kann das bottom nicht durch ein top ersetzen, weil der Fehler auch ohne Angabe der Höhe - manchmal - auftritt, also wenn nur der Inhalt die Höhe des DIV bestimmt)
Hallo,
offenbar kann der IE da nicht auf 1 Pixel genau positionieren, und es
tritt auch beim IE 6 auf, wenn ich es richtig beobachtet habe unabhängig
von Doctype /Rendermodus.
Eine etwas aufwändige Möglichkeit wäre die Korrektur per JavaScript bzw.
expression:
<script type="text/javascript">
function iek(){
document.getElementById('bimg').style.setExpression("top",
" document.getElementById('b').clientHeight-document.getElementById('bimg').clientHeight " );
}
window.onload=iek;
</script>
</head><body>
<div id="a">
<img class="ecke" src="ecke_rechts.gif" alt="">
</div>
<div id="b">
<img id="bimg" class="ecke" src="ecke_rechts.gif" alt="">
</div>
Grüsse
Cyx23
Hallo zurück,
offenbar kann der IE da nicht auf 1 Pixel genau positionieren, und es
tritt auch beim IE 6 auf, wenn ich es richtig beobachtet habe unabhängig
von Doctype /Rendermodus.
Ja, an den Bedingungen für den Fehler habe ich auch lange rumgeschraubt und immer weniger Code gebraucht, um ihn zu provozieren.
Expressions kannte ich noch gar nicht, danke für den Hinweis! Ich habe das Problem mittlerweile mit dem "Man kann nicht immer alles haben"-Ansatz gelöst: per conditional comment bekommt der IE jetzt die sowieso nur kosmetischen runden Ecken verboten. So!
Simon