Alexander Kleinjung: Bild via JavaScript ERST horizontal und DANN vertikal verschieben

Hallo & Guten Morgen :-)

<sinnierend>
Ich hab mich dazu hinreissen lassen, einer jungen Dame zum Geburtstag eine Website zu schenken und diese Dame hat nun ganz besondere Wünsche und Ideen und ich bin jetzt der Dumme...
</sinnierend>

Naja, ganz so schlimm isses nicht. Vor allem weiss ich, dass das, was ich machen will - meine Frage kommt auch gleich! - eigentlich ein Fall frü Flash ist, aber es soll eben ohne jedes PlugIn funktionieren, also:

Ich möchte, quasi als Intro, eine Datei, die sich beim Laden der Seite außerhalb des sichtbaren Bereiches befindet,

  • ERST horizontal verschieben (bis sie zentriert ist)
      und
  • DANN vertikal um sagen wir mal 150px nach unten wandern lassen.

Also hab ich besagte Grafik in einen absolut positionierten <DIV> gepackt und lasse den dann mit

document.all.NameDesDIV.style.left = x
      (wobei x mittels Timeout und If-Abfrage hochgezählt wird)

horizontal verschieben. Klappt auch wunderbar.

Nur wenn ich versuche, diese Grafik, NACHDEM sie ihre horizontale Wunschposition erreicht hat, vertikal zu verschieben, gibt es Probleme, denn wenn ich meine Variable "x" als Operator für die If-Abfrage nehme, die dieses vertikale Verschieben starten soll, als auch, wenn ich mit
      
      if(document.all.NameDesDIV.style.left = (Wert)

diesen Operator definiere, wird die Funktion, die dieses vertikale Verschieben bewirkt, zu früh gestartet, was wohl daran liegen dürfte, dass die "theoretischen" Werte schneller hochgezählt sind, als sich das ganze wirklich am Screen vollzieht.

Hat jemand von Euch eine Idee, wie ich es besser/anders/klüger anstellen kann, sprich wie ich diese vertikale verschieben WIRKLICH erst dann starte, wenn diese Grafik die "richtige" horizontale Position erreicht hat...?

<unschuldigguck>
Und wenn ich schon mal am Fragen bin: Wie kann ich die Größe meines <DIV>'s, in dem sich diese zu verschiebende Grafik befindet, dynamisch verändern (verkleinern)?

document.all.NameDesDIV.height = (Wert)

funzt leider nicht; IE meldet dann, dass das Objekt diese Funktion nicht unterstützt.
</unschulddigguck>

<menschlich>
Und bitte nicht schlecht über mich denken... auch wenn hier sehr viel von "horizontal" die Rede war, so denke ich nicht wirklich immer nur an horizontales :-)
</menschlich>

Im Voraus besten Dank an alle, die mir die Bäume zeigen werden, ich ich vor lauter Wald gerade nicht sehe. Und Euch allen einen stressfreien Freitag & ein sonniges Wochenende.

Viele Grüße
      Alex

  1. Hallo Alex,

    Hat jemand von Euch eine Idee, wie ich es besser/anders/klüger anstellen kann, sprich wie ich diese

    vertikale verschieben WIRKLICH erst dann starte, wenn diese Grafik die "richtige" horizontale Position
    erreicht hat...?

    in dem Du ein Programm schreibst mit den von Dir genannten Bedingungen und dieses dann im Fehlerfall
    hier vorstellst.

    Und wenn ich schon mal am Fragen bin: Wie kann ich die Größe meines <DIV>'s, in dem sich diese zu

    verschiebende Grafik befindet, dynamisch verändern (verkleinern)?

    Mit der Angabe "clip" kannst Du den sichtbaren Bereich eingrenzen. Musst Du Dir in SelfHTML anschauen,
    ob Dir das weiterhilft. Ansonsten mal mit "outerHTML" rumspielen, ob sich ein DIV-Bereich damit in der
    Größe manipulieren lässt, was dann nur mit IE funzen würde.

    Und bitte nicht schlecht über mich denken... auch wenn hier sehr viel von "horizontal" die Rede war, so

    denke ich nicht wirklich immer nur an horizontales :-)

    Womit ich über Dich denke, dass Du der Pubertät noch nicht entwachsen bist und Dein sexuelles
    Erwachen gerade erst begonnen hat. Bist Du spitz auf die Alte, der Du die Page geschenkt hast?

    voyeuristische Grüße
    Philip

    1. Hallo Philip,

      aus meiner Frage:
          -----------------
      »»  Hat jemand von Euch eine Idee, wie ich es besser/anders/klüger
      »»  anstellen kann, sprich wie ich diese vertikale verschieben
      »»  WIRKLICH erst dann starte, wenn diese Grafik die "richtige"
      »»  horizontale Position erreicht hat...?

      aus Deiner Antwort:
         -------------------

      in dem Du ein Programm schreibst mit den von Dir genannten
      Bedingungen und dieses dann im Fehlerfall hier vorstellst.

      <ironisch>
      Ganz herzlichen Dank für Deine freundlichen Bemühungen, denn darauf wäre ich doch nie im Leben gekommen...
      </ironisch>

      <im ernst>
      Sorry, ich habe einfach nur gefragt, wie ich mein Problem lösen kann, denn dass es wohl daran liegt, dass meine Operatoren schneller ihre Soll-Werte erreichen, als sich die Objekte auf dem Screen bewegen, weiss ich selbst.

      Außerdem habe ich diese "Funktion" faktisch in meiner Frage wiedergegeben.

      Ich will doch nur wissen, wie ich verlässlich die Position von Elementen abfragen kann, denn auf den Wegen, die ich bislang gegangen bin, bekomme ich ein falsches Ergebnis, weil lt. Java meine Grafik bereits an der Wunschposition ist, während sie in Wahrheit gemütlich über den Bildschirm zuckelt.

      Und by the way: Clip funzt lt. SELFHTML nur beim NN, ich möchte es aber für beide Browser kompatibel machen und nicht morgen nachfragen müssen, wie man es beim IE macht, denn NN unterstützt ja clip.
      </im ernst>

      expressis verbis:
      Die Frage ist nach wie vor aktuell.

      Aber trotzdem besten Dank für den Versuch, mir zu helfen.

      Dir und allen anderen einen schönen Tag
            ALEX

      <menschelei>

      Bist Du spitz auf die Alte, der Du die Page geschenkt hast?

      Hey, das war echt der Joke des Tages :-))
      </menschelei>

      1. Undank ist der Welt Lohn, aber damit kann ich leben :)

        1. Hey Philip,

          so war's wirklich nicht gemeint *sorry*

          Wünsch Dir ein besonders schönes & sonniges Wochenende

          Liebe Grüße
          Alex

      2. Hi
        Das Problem, dass sich die Grafik langsamer bewegt als gewuenscht, liegt !glaube ich! daran, dass dein Rechner langsamer ist, als die Funktion.
        Wenn ich auf meinem Pentium 160MMX so ein Script laufen lasse, dann hinkt die Grafik auch etwas hinterher.
        Aber ich bezweifle stark, dass du daran irgendetwas aendern kannst. Um zu beurteilen ob es "nur" and deinem Rechner liegt oder an deiner Funktion waere es auf jeden Fall hilfreich, wenn du die Ganze! Funktion inklusive des divs mit dem Bild nochmal posten wuerdest. (Oder du gibst eine URL an wo man sich das ganze betrachten kann.)
        Bei Javascript koennen schon Kleinigkeiten dafuer sorgen, dass ein Script "Dummheiten" macht, auch wenn die Grundidee richtig ist.
        Zu dem Kommentar mit clip: Auch fuer den IE gibt es die clip Anweisung. Siehe <../../tdch.htm#a20>
        PS du hast bei deiner if Anweisung geschriegen if (...=..) das muss ein doppeltes Gleichheitszeichen sein. Aber ich hoffe mal das das nur ein Schreibfehler von dir war.
        Ich habe mal ein kleines Versuchsscript gebastelt, das bei mir (leider nur NS!) das tut was es soll. (Mein IE3 weigert sich strikt Ebenen zu bewegen ;-)
        Soll heissen, dass der Bereich fuer den IE vieleicht noch ein Paar Fehler enthaelt. Viel Spass beim Durchchecken.
        <html>
        <head>
        <title>Bewegter Layer</title>
        <script language="JavaScript">
        <!--
        function init()
        {
        if (document.layers)
        ebene=document.layers[0];
        else if (document.all)
        ebene=document.all.ebene1.style;
        nachrechts();
        }

        function nachrechts() {
        eval(ebene.left+=10);
        if (ebene.left<300)
        window.setTimeout("nachrechts()",10);
        else window.setTimeout("nachunten()",10);
        }

        function nachunten()
        {
        document.layers[0].top+=10;
        if (ebene.top<300)
        {
        window.setTimeout("nachunten()",10);
        test=100;
        }
        else
        {
        if (ebene.top<400)
        if (document.layers)
        ebene.clip.height=ebene.clip.height-10;
        else if (document.all)
        {
        test=test-10;
        ebene.clip=rect(0,100,test,0);
        }
        window.setTimeout("nachunten()",200);
        }
        }
        //-->
        </script>
        </head>
        <body onload="init();">
        <div id="ebene1" style="position:absolute;top:10;left:-100;"><img src="bild1.gif" width=100 height=100></div>
        <div style="position:absolute;top:10;left:400;"><img src="bild2.gif" width=100 height=100></div>
        </body>
        </html>

        <menschelei>

        Bist Du spitz auf die Alte, der Du die Page geschenkt hast?

        Hey, das war echt der Joke des Tages :-))
        </menschelei>

        Da hat wohl jemand vergessen auf deiner Homepage zu gucken ;-)

        Nochmal kurz wiederholt: Ich denke das es trotz allem sinnvoll waere, wenn du eine URL oder den ganzen Quelltext des Javascripts veroeffentlichst.
        Tschau Holger