Częściowo CSSem, częściowo JavaScriptem i jest (prawie) dobrze.
Kod: Zaznacz cały
div#win { overflow: auto; max-width: 900px; margin-left: auto; margin-right: auto; position: absolute; }
Po wczytaniu strony wywołuję taką funkcję:
Kod: Zaznacz cały
function wincenter()
{
var win=document.getElementById('win');
var h=window.innerHeight-100;
win.style.maxHeight=h+"px";
}
Dzięki temu mam DIVa o max-width 900px, max-height ustawiam dynamicznie w zależności od wysokości obszaru roboczego przeglądarki. Jeżeli zawartość okna pozwala na rozszerzenie DIVa do 900px, można rzec, że jest wycentrowany. Inaczej sprawa się ma, kiedy ma mniejszą szerokość - wtedy zawsze prawy margines jest większy.
Ponadto, będę musiał go jakoś dynamicznie pozycjonować, bo jak przycisk do wczytywania zawartości jest gdzieś na dole strony, tak że wymaga jej przewinięcia, DIV pokazuje się na górze strony. Rozwiązaniem jest przewinięcie strony do góry (kiepskim), lub przeniesienie DIVa w odpowiednie miejsce na stronie.
Jak będę miał siłę i wenę to dojdę do tego jak to zrobić i wtedy podkręcę rozwiązanie.
Edit:
Dodałem jeszcze funkcję:
Kod: Zaznacz cały
function centerWin()
{
var win=document.getElementById('win');
var maxH=window.innerHeight-100;
var posX=(window.innerWidth-900)/2;
var posY=window.pageYOffset+50;
posX+='px';
posY+='px';
win.style.maxHeight=maxH+"px";
win.style.top=posY;
win.style.left=posX;
win.style.display="block";
win.style.border="1px solid gray";
}
którą wywołuję po każdym wczytaniu zawartości DIVa. Jest już całkiem nieźle
