Standardmäßig ist h1 ein Blockelement und wird in der Zeile nach dem ersten Bild gerendert. Das zweite Bild wird in der Zeile nach dem Block angezeigt.
Um dies zu verhindern, können Sie das h1 so einstellen, dass es ein Inline-Flussverhalten aufweist:
#header > h1 { display: inline; }
Um das Bild absolut innerhalb des Div zu positionieren , müssen Sie das enthaltende Div auf eine "bekannte Größe" einstellen, bevor dies ordnungsgemäß funktioniert. Nach meiner Erfahrung müssen Sie auch das Positionsattribut von der Standardeinstellung ändern - position: relative funktioniert für mich:
#header { position: relative; width: 20em; height: 20em; }
#img-for-abs-positioning { position: absolute; top: 0; left: 0; }
Wenn dies funktioniert, sollten Sie versuchen, die Attribute für Höhe, Breite und Position schrittweise aus div.header zu entfernen, um die minimal erforderlichen Attribute zu erhalten, um den gewünschten Effekt zu erzielen.
AKTUALISIEREN:
Hier ist ein vollständiges Beispiel, das unter Firefox 3 funktioniert:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Example of vertical positioning inside a div</title>
<style type="text/css">
#header > h1 { display: inline; }
#header { border: solid 1px red;
position: relative; }
#img-for-abs-positioning { position: absolute;
bottom: -1em; right: 2em; }
</style>
</head>
<body>
<div id="header">
<img src="#" alt="Image 1" width="40" height="40" />
<h1>Header</h1>
<img src="#" alt="Image 2" width="40" height="40"
id="img-for-abs-positioning" />
</div>
</body>
</html>