Используйте два DIV, один вложенный в другой.
Внешний DIV должен быть установлен на position:fixed;max-height:100%;overflow-y:auto
Внутренний DIV будет содержать ваше содержимое.Насколько я могу судить, для этого не потребуются какие-либо особые стили.
Что должно произойти (и что происходит, когда я проверяю это исправление в моем браузере), это то, что внешний DIV должен сжиматься, чтобы соответствоватьвнутренний DIV - но он не будет превышать высоту окна.Если внутренний DIV превышает высоту окна, он также будет превышать высоту внешнего DIV, создавая полосу прокрутки.
EDIT: Пример разметки:
<div id="outer">
<div class="inner">
Content goes here.
</div>
</div>
И CSS:
#outer{
position:fixed;
max-height:100%;
overflow-y:auto;
bottom:0; /* sample value */
left:0; /* sample value */
}
#outer div.inner{
/* Whatever style you want the positioned box
to have. Border, padding, background, etc. */
}