За замовчуванням h1 є блоковим елементом і відображатиметься у рядку після першого img, а другий img з'явиться у рядку, що слідує за блоком.
Щоб запобігти цьому, ви можете встановити h1 таким чином, щоб він був поточним:
#header > h1 { display: inline; }
Що стосується абсолютного розміщення img всередині div , вам потрібно встановити містить div таким чином, щоб мати "відомий розмір", перш ніж це буде працювати належним чином. На мій досвід, вам також потрібно змінити атрибут позиції подалі від за замовчуванням - позиція: відносно працює для мене:
#header { position: relative; width: 20em; height: 20em; }
#img-for-abs-positioning { position: absolute; top: 0; left: 0; }
Якщо ви зможете працювати так, ви можете спробувати поступово видалити атрибути висоти, ширини, позиції з div.header, щоб отримати мінімально необхідні атрибути, щоб отримати потрібний ефект.
ОНОВЛЕННЯ:
Ось повний приклад, який працює на Firefox 3:
<!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>