2010-12-12 23 views
1

Es ist mein Verständnis, dass position: absolute ist absolut für den ersten Elternteil, der eine nicht-statische Position hat. Wenn kein Elternteil eine bestimmte Position hat, wird es für den Browser/das Fenster absolut sein.Position: absolute absolute für den Browser/Fenster

position: fixed auf der anderen Seite wird absolut für den Browser sein, aber es funktioniert nicht für IE im Quirks-Modus.

Mein Problem ist, dass ich etwas wollen top:0; left:0; aber die Website ist im Quirks-Modus, und ich nur in meinem persönlichen div bearbeiten. (Es ist eine Benutzerwebsite wie myspace). Es gibt viele übergeordnete divs, die position: relative haben.

Wie kann ich position: absolute als position: fixed ohne die Notwendigkeit des Objekts stationär handeln (es kann notfalls stationär sein)?

+0

Kannst du das ganze außerhalb HTML mit Javascript töten? ' ' – thejh

+0

@thejh Ich versuchte das und IE beschwert sich" Kann das übergeordnete Containerelement nicht ändern, bevor das untergeordnete Element geschlossen wird " – ParoX

+0

Tun Sie es in einem Onload-Handler. Fügen Sie dem Fenster einen 'load'-Handler hinzu. – thejh

Antwort

1

frühe Versionen von IE unterstützen einfach nicht position: behoben;

die einzige Sache, die ich kenne, ist eine Javacript Abhilfe etwa so:

var layerPadding = 5; 
function layerScrollFixEx() { 
    if (layerGetScrollPosition() != (document.getElementById('layer').offsetTop - layerPadding)) { 
     document.getElementById('layer').style.top = layerGetScrollPosition() + layerPadding + "px"; 
    } 
} 

function layerGetScrollPosition() { 
    if (typeof window.pageYOffset != 'undefined') { 
     return window.pageYOffset; 
    } 
    else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { 
     return document.documentElement.scrollTop; 
    } 
     else if (typeof document.body != 'undefined') { 
     return document.body.scrollTop; 
    } 
} 
layerScrollInterval = window.setInterval("layerScrollFixEx()", 1); 

dies ist ein Code Auszug aus einigem Code, dass ich eine Weile zurück tat, als dies noch relevant war.

+0

Dies scheint nur die Fähigkeit zu "imitieren" an einer Stelle durch Neudefinition seiner Position nachzuahmen. Ich suche nach oben: 0, links: 0 in Bezug auf das Browserfenster – ParoX

+0

das ist es genau, zeigt das Beispiel nur die Korrektur für das vertikale Scrollen ... aber Sie können es leicht anpassen –

+0

Sie wollen das Element zu bleib wo es ist beim scrollen nicht du? Das ist, welche Position fest ist. ansonsten würden Sie absolute Position benötigen, die perfekt unterstützt wird ... –