Вы используете абсолютное позиционирование внутреннего div для позиционирования его относительно внешнего div, но вы не хотите, чтобы его содержимое считалось внешним содержимым div. Чтобы достичь этого, вам нужно отделить внутреннюю позицию div от внутреннего содержимого div. Вы можете попытаться сделать это, поместив содержимое в фиксированный div.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head> <title>Test</title> </head>
<body>
<div style="position: relative; height: 100px; width: 100px; background: red; overflow: auto;">
<div style="position: absolute; top: 20px; left: 20px; height: 10px; width: 10px;">
<div style="position: fixed; height: 100px; width: 100px; background: green;"></div>
</div>
</div>
</body>
</html>
Хитрость в том, что фиксированный div без указанных сверху / снизу / слева / справа будет позиционироваться в своем «статическом» положении, что, похоже, вам и нужно.
У вас могут быть проблемы с z-порядком, но из вашего объяснения вы действительно хотите, чтобы ваше «меню» было выше всего остального. (Я предполагаю, что это приходит и уходит). У вас наверняка возникнут проблемы при печати страницы - если имеется более одной страницы, фиксированный элемент повторяется.
Как указал jvenema, это не сработает в IE6. (