Theo mặc định, h1 là một phần tử khối và sẽ hiển thị trên dòng sau img đầu tiên và sẽ khiến img thứ hai xuất hiện trên dòng tiếp theo khối.
Để ngăn điều này xảy ra, bạn có thể đặt h1 có hành vi luồng nội tuyến:
#header > h1 { display: inline; }
Đối với việc định vị hoàn toàn img bên trong div , bạn cần đặt div chứa có "kích thước đã biết" trước khi điều này hoạt động bình thường. Theo kinh nghiệm của tôi, bạn cũng cần thay đổi thuộc tính vị trí khỏi mặc định - vị trí: tương đối hoạt động với tôi:
#header { position: relative; width: 20em; height: 20em; }
#img-for-abs-positioning { position: absolute; top: 0; left: 0; }
Nếu bạn có thể làm cho nó hoạt động, bạn có thể muốn thử dần dần loại bỏ các thuộc tính chiều cao, chiều rộng, vị trí khỏi div.header để có được các thuộc tính bắt buộc tối thiểu để có được hiệu ứng bạn muốn.
CẬP NHẬT:
Dưới đây là một ví dụ hoàn chỉnh hoạt động trên 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>