Ideale Darstellung gesucht (Teil 2)
Cheatah
- dhtml
0 Jens Menke0 Cheatah
Hi,
da der Thread von http://www.teamone.de/selfaktuell/self_forum/26807.html mittlerweile recht tief gerutscht ist, fange ich einen neuen an, das Problem ist aber immer noch in etwa das gleiche.
Aktueller Stand ist aber, daß ich einfach per SSI ein Script einbinde, welches zunächst den Browser ermittelt und dann den entsprechenden Code zurückliefert - das entspannt die Situation ein wenig, weil ich nicht auf für andere Browser optimierten Code Rücksicht nehmen muß. Das Script gibt derzeit folgendes aus:
Netscape 4:
<div name="ecke" style="position:absolute; left:0px;"><img src="/test/grf/downleft.gif" width="130" height="80" alt=""></div>
und als JavaScript:
document.ecke.top = document.ecke.top - 76;
if (document.ecke.top+76 < window.innerHeight) { document.ecke.top = window.innerHeight - 76; }
MSIE 4, 5:
<div id="ecke" style="position:absolute; z-index:-1; left:0px; background-image:url(/test/grf/downleft.gif); background-attachment:fixed; background-repeat:no-repeat; width:130px; height:80px;"></div>
und als JavaScript:
document.all.ecke.style.top = document.body.offsetHeight - 80;
Zu Netscape 4: Das ganze ist glaube ich so optimiert, wie es eben geht. Die Ecke ist am unteren Dokumentrand und wird ggf. weggescrollt, oder bei kleineren Seiten am unteren Framerand. Für Netscape 5 gebe ich derzeit noch nichts aus, damit beschäftige ich mich später.
Zu MSIE 4, 5: Hier verzichte ich auf den <img>-Tag und verlasse mich auf CSS. Leider ist es mir noch immer nicht gelungen, das <div> (günstig) anders zu platzieren als an den unteren Framerand - von wo es weggescrollt werden kann, und zwar mitten im Dokument. Ich suche eine der drei folgenden Lösungen, und zwar die idealste vorne:
1.) Das <div> bleibt beim Scrollen einfach wo es ist, also position:fixed. Der MSIE scheint(!) dies aber leider nicht zu interpretieren, oder?
2.) Das <div> wird wie bei Netscape ein wenig nach oben verschoben, damit unten nicht zu viel Platz verschenkt wird (document.all.ecke.style.top ist aber offenbar zunächst leer!); nur wenn das Dokument kleiner ist als der Frame wird das <div> nach unten verschoben. Es scrollt ggf. mit, aber eben nicht mitten im Dokument. Dies scheitert daran, daß ich weder die aktuelle (initiale) Position des <div> noch die Gesamtgröße des Dokuments (nicht Frames) herausfinden kann.
3.) Das <div> wird alle x Millisekunden oder (noch besser) onscroll nachpositioniert. Ich habe leider keinen Weg gefunden, die aktuelle Scrollposition herauszufinden; zumindest window.pageYOffset kennt der Browser nicht.
Gibt es für einen der Punkte eine Lösung?
Cheatah
3.) Das <div> wird alle x Millisekunden oder (noch besser) onscroll nachpositioniert. Ich habe leider keinen Weg gefunden, die aktuelle Scrollposition herauszufinden; zumindest window.pageYOffset kennt der Browser nicht.
Hi.. ich hab letzt gerade ne Mitscrollende Menübar
gebastellt.. daher hab ich gerade noch die Funktion
zur Hand.. ahja.. scrollTop sollte dir weiterhelfen
gruss
Jens
function setYPosition() {
if (IE) {myTop=document.body.scrollTop;}
else {myTop= window.pageYOffset;}
if (myTop > 50) {
getObj('navLayer').top= myTop;
menuTop= myTop +35;
} else {
getObj('navLayer').top=50;
menuTop= 85;
}
}
Hi,
3.) Das <div> wird alle x Millisekunden oder (noch besser) onscroll nachpositioniert. Ich habe leider keinen Weg gefunden, die aktuelle Scrollposition herauszufinden; zumindest window.pageYOffset kennt der Browser nicht.
Hi.. ich hab letzt gerade ne Mitscrollende Menübar
gebastellt.. daher hab ich gerade noch die Funktion
zur Hand.. ahja.. scrollTop sollte dir weiterhelfen
in der Tat, das habe ich mittlerweile auch mit window.onscroll verbunden. Funktioniert bei Scrolling mit der Maus perfekt (auf meinem Rechner, "immerhin" ein Pentium 150), mit der Tastatur ruckelt's aber.
Nr. 3 war ohnehin nur die Notlösung; zwar funktioniert es jetzt, aber vielleicht weiß ja jemand zu 1. oder 2. noch Rat...?
In jedem Fall danke :-)
Cheatah