2009-08-20 4 views
0

Ok Ich weiß, ich mag IE6 nicht mehr als Sie. In der Tat mag ich es vielleicht weniger als Sie. Ich stehe jedoch fest damit.Gibt es eine Möglichkeit, ein div eine feste Kopfzeile zu machen, wenn es in IE6 aus der Sicht gescrollt wird?

Grundsätzlich möchte ich genau das gleiche Verhalten wie die Funktion "Zeige Seiteninhalt" auf quirksmode aber in IE6. Das heißt, ich habe ein Div, das auf den ersten Blick relativ positioniert erscheint. Wenn Sie dann blättern, bevor das div nicht mehr sichtbar ist, wird es fest positioniert. Wenn Sie zurück zum Anfang blättern, sollte das div nicht an der Spitze des Fensters positioniert werden, es sollte zurück sein, wo es beim Starten der Seite war.

Antwort

1

Yep - Ich mache dasselbe bei einem Projekt, das ich bei meinem Cube-Job behalte. Sie können CSS-Ausdrücke und eine Position fixiert Hack in einem IE6 nur Sheet verwenden, um es arbeiten:

/* The background-attachment: fixed smooths out the IE scrolling */ 
body { 
    background: url(foo.gif) fixed; 
} 

/* Adjust the 100 to whatever height you want 
    your container to start being fixed position at */ 
#fixedElement { 
    position: absolute; 
    left: 0; 
    top: expression(documentElement.scrollTop > 100 ? documentElement.scrollTop : 100); 
} 

Beachten Sie, dass die oben documentElement.scrollTop ist, wenn IE6 im Standardmodus ist. Wenn du dich im Quirks-Modus befindest, musst du ihn in document.body.scrollTop ändern.

Edit:Mit aktueller Position des rollbaren Elements

Wenn Sie es dynamisch und verwenden, um die aktuelle Position des Elements machen möchten (erhalten in dem obigen Ausdruck der 100 rid), können Sie tun es durch die Position eines ein Element testen, die an der Schwelle von rechts ist, wo man beginnen soll Scrollen:

HTML

<div id="startScroll"></div> 
<div id="fixedElement"> 
    Fixed scrolling content 
</div> 

CSS

#fixedElement{ 
    position: expression(document.getElementById('startScroll').offsetTop < documentElement.scrollTop ? "absolute" : "static"); 
    top: expression(documentElement.scrollTop); 
} 

Der Grund, warum Sie nicht auf #fixedElement testen selbst ist, denn sobald es Position fixiert begonnen wird, können Sie die Schwelle verloren haben, wo Sie starten und stoppen wollen Scrollen.

Auch # startScroll.offsetTop wird relativ zu seinem übergeordneten Element sein, also müssen Sie möglicherweise eine Konstante hinzufügen, um dies zu berücksichtigen (dh es ist in einem Container #content, der tatsächlich 50px von der oben auf dem Bildschirm selbst).

+0

Ist es möglich, die 100 zu entfernen und durch die aktuelle Position des Elements zu ersetzen? – Bob

+0

Sicher, werfen Sie einen Blick auf den aktualisierten Code. – Pat

+0

Danke! das sieht gut aus – Bob