Layer bewegen und stoppen
Hes
- javascript
0 Christoph Schnauß0 Gernot Back
0 Hes
Hallo, ich hab' da ein Problem - so 'n Zufall - und brauche bitte, bitte Hilfe - immerhin sagt sie bitte...
Also, ich möchte einen Layer bewegen. Das wäre nicht so schwer, allerdings soll das auch im Browser "Safari" funzen. Ich habe ein Script gefunden, das ich solange gequält habe, bis zumindest drei Sachen schon mal erreicht waren:
Tja, inzwischen hat mich mein Bastelglück verlassen. Mir ist nicht klar, wie ich meinen Layer nach 35px stoppe. Außerdem sieht man dem Code natürlich an, dass er ursprünglich für einen komplexere Bewegung geschrienben wurde. Ich bin mal so dreist und suche hier meinen ganz persönlichen Helden der sagt: "Na das schreib ich doch in 3 min um". Büdde, büdde... Oder auch immer wieder gern genommen: "Hiiiiilfe!" Würde mich wirklich riesig freuen, wenn mir da jemand weiterhelfen könnte.
Devote und hilfsbedürftige Grüße - Hes
<html>
<head>
<title>test</title>
</head>
<body>
<script language="JavaScript">
<!--
// Bild
P=new Image();
das_bild="gif/rechteck.gif"; //image
S=0.1; //geschwindigkeit
D=0; //winkel
// Ansprechen der unterschiedlichen Browser
NS4=(document.layers);
NS6=(document.getElementById&&!document.all);
IE4=(document.all);
L=null;
if (NS4){
document.write("<LAYER NAME='netscape' LEFT=0 TOP=262><img src="+das_bild+"></LAYER>");
}
if (NS6){
document.write("<img id='n6' src='"+das_bild+"' style='position:absolute;top:0px;left:0px;z-index:2;'>");
}
if (IE4){
document.write("<div style='position:absolute;top:262px;left:0px'><div style='position:relative'>");
document.write("<img id='explorer' src='"+das_bild+"' style='position:absolute;top:262px;left:0px;z-index:2;'>");
document.write("</div></div>")
}
// Startposition des blauen Rechtecks
Y=262;
X=378;
function Move(){
var H=(NS6||NS4)?window.innerHeight:document.body.clientHeight;
var W=(NS6||NS4)?window.innerWidth:document.body.clientWidth;
var YS=(NS6||NS4)?window.pageYOffset:document.body.scrollTop;
var XS=(NS6||NS4)?window.pageXOffset:document.body.scrollLeft;
// Bewegen
x=1;
X+=x;
Y+=0
if (NS4){
L=document.netscape
}
if (NS6){
L=document.getElementById("n6").style
}
if (IE4){
L=explorer.style
}
L.top=Y+YS;
L.left=X+XS;
setTimeout('Move()',10);
}
Move();
//-->
</script>
<div class="logo">
logo
</div>
</body>
</html>
hallo Hes,
Ich habe ein Script gefunden, das ich solange gequält habe
Warum hast du dir nicht gleich selber eines geschrieben?
Mir ist nicht klar, wie ich meinen Layer nach 35px stoppe.
Da das Ganze ohnehin mit Javascript laufen soll, kannst du auch einen "stop_punkt" festlegen.
Außerdem sieht man dem Code natürlich an, dass er ursprünglich für einen komplexere Bewegung geschrienben wurde.
So? Ich sehe an dem von dir geposteten Code sowas nicht
<script language="JavaScript">
Das ist schon mal auf unverzeihliche Weise absolut falsch. Wehe, wenn Cheatah das entdeckt (er möge in Ruhe schlafen und genüßliche Träume haben). Korrekt wäre
<script type="text/javascript ...">
NS4=(document.layers);
NS6=(document.getElementById&&!document.all);
IE4=(document.all);
Hm. Wo ist hier der Safari, der dir so viel Mühe macht? Und bist du sicher, daß bei "document.all" wirklich nur der Internet Explorer v.4 angesprochen wird? Was bezweckt die Angabe "&&!document.all"?
<div class="logo">
logo
</div>
Das ist ziemlich sinnfrei.
Es wird nicht ganz klar, was du mit dem "bewegen" meinst. Soll dein DIV resp. Layer lediglich an irgendeine andere Stelle "springen"? Oder willst du das gute Stück scrollen lassen?
Grüße aus Berlin
Christoph S.
Hallo Hes,
Devote und hilfsbedürftige Grüße
Wow, wir sind das perfekte Match! Ich bin dominant-hilfsbereit.
Deshalb bin ich jetzt mal ganz streng: beschreibe mal ganz genau, was du eigentlich haben willst!
Z.B.: Wo soll sich dein Element bewegen, am unteren Browserfensterrand, in der Mitte oder in einem bestimmten Abstand vom oberen Browserfensterrand? Von wo bis wo soll es laufen? Im Moment sieht das in unterschiedlichen Browsern sehr unterschiedlich aus.
Mach notfalls eine Skizze und lade die uns hoch, damit wir dir konkrete Tipps geben können, wie du das am besten umsetzt, sodass möglichst viele Browser das darstellen.
Ich fürchte aber, von deinem bisherigen Quellcode wird dabei kaum etwas übrig bleiben.
Gruß Gernot
Hallo Ihr 2,
ganz lieben Dank für Eure Mühe.
@Gernot: Die Skizze bleibt mir erspart, da ich inzwischen eine Lösung gefunden habe, aber ganz lieben Dank für Deine Hilfsbereitschaft. Was mein Script tun sollte, kann man nun hier sehen: http://www.duschdiva.de/test/
@Christoph: Warum habe ich kein eigenes Script geschrieben? Nun, ich bringe mir gerade PHP bei und bin ein Freund von "eins nach dem anderen". Mein Hirnschmalz reicht aber glücklicherweise aus, um ein vorhandenes JScript zu modifizieren. Dass Safari im Code nicht auftaucht, liegt daran, dass sich Safari mit dem Teil des Codes bereits identifiziert, den er braucht. Wäre ja auch schlimm, wenn ich für alle Browser dieser Welt eine eigene Abfrage schreiben müßte *grusel*.
<div class="logo">
logo
</div>
Ist durchaus nicht sinnfrei, da das zugehörige Bild usw. im ausgelagerten CSS liegt. Allerdings hatte ich einen gekürzten Code hier eingestellt *schuldbewußt schau*.
Danke Euch beiden sehr für Eure Hilfsbereitschaft - Hes
Hallo Hes,
ehrlich gesagt, das würde ich ja mit 'nem animierten Gif machen. Das ganze Bild zerstückelt in den Bereich, der animiert werden soll und die übrigen und dann wieder zusammengesetzt. Dann funktioniert es auch ohne JS, allerdings nicht bei den Puritanern, die auch Ani-Gifs unterbinden. aber deren Willen muss man dann halt sowieso respektieren.
Ich bin mir selbst unsicher, ob das dieselben sind, die JS bzw. Gif-Animationen unterbinden und/oder welche Gruppe wirklich größer ist.
Gruß Gernot