Kleines Spiel Script "Javascript"

  • Probiere dies:

    Code
    var lnk = document.createElement('link');
        lnk.rel = 'stylesheet';
        lnk.type = 'text/css';
        lnk.href = 'css/formate.css';
        document.head.appendChild(lnk);

    jo fett das funktioniert ..danke dir...



    wenn du mal lust hast kannst du dir mein poppeliges lauflicht ankucken...

    https://greasyfork.org/de/scri…5-lauflichts-updates-test


    ich glaube man könnte den code bestimmt noch um einiges kürzen ,so wie ich dein code sehe müsste da noch was drinne sein... wie man da sieht habe ich da schon mit "clone" und css gearbeitet sonst währ das bestimmt noch mehr code geworden.... wenn du oder ihr lust habt kuckt mal rein und sagt ihr als profis mal was dazu wie man das verbessern kann und was man vieleicht nicht machen soll...


    ich weiss ja nicht ob ganze divs clonen so im sinne des erfinders wahr wie ich es gemacht habe

  • Wie ich sehe, hast Du dabei einiges umgesetzt, was wir früher diskutiert haben.

    Das Klonen ist eine gute Idee, gefällt mir.

    Leider hat dieses Skript jedoch meinen Browser völlig lahm gelegt. Das Kernproblem war folgendes:

    Die Funktion unten(), die #einstellung klont und die Elemente links, rechts und unten anlegt, rufst Du während der zyklischen Bearbeitung auf, so dass immer mehr und mehr dieser Elemente angelegt werden. Du solltest dies nur einmal beim Laden der Seite tun.

    Weitere Verbesserungsvorschläge:

    Funktion setInterval() verwenden, weil sich ja alle zyklisch wiederholt.

    Nicht die einzelnen Rechtecke #einsx bewegen, sondern die gesamten Container #einstellungx.

  • bei den clonen habe ich gerade ein hänger,,,,das clonen aus der schleife zu nehmen ergibt ein sinn....

    aber da in meinen fall ja bei jeden schleifen durchlauf die positsionen verändert werden ,clone ich ja jedesmal ein anderes element (zumindet den inhalt).... wie kann ich das den nur einmal klonen ( also vor den schleifen durchlauf),und dann in nachherein den inhalt des clones ändern ????? da stehe ich gerade auf den schlauch weil sowas wie innerHTML hat mein clone nicht bzw wüsste ich gerade nicht ob das überhaubt gehen würde und ob das klappen tut ........ das mit setinterval anstatt timeout das läst sich ja leicht machen ....aber ergibt das den ein sinn??? weil es wiederholt sich ja sogesehen in beiden varianten immer wieder alles,,oder hat setinterval irgendwie noch einen anderen vorteil( beschleunigung resorcen),oder so was ????

    Wie ich sehe, hast Du dabei einiges umgesetzt, was wir früher diskutiert haben.

     

    Jo das stimmt, ich lerne gerne und wie bei einen guten lehrer wie von dir macht das sogar spass

  • Zitat

    aber da in meinen fall ja bei jeden schleifen durchlauf die positsionen verändert werden ,clone ich ja jedesmal ein anderes element (zumindet den inhalt).... wie kann ich das den nur einmal klonen ( also vor den schleifen durchlauf),und dann in nachherein den inhalt des clones ändern ?????

    Ah ja, jetzt verstehe ich, warum Du das gemacht hast, beim Klonen nimmst Du auch die CSS-Eigenschaften mit. Eigentlich auch eine gute Idee.

    Um das zu lösen, müsstest Du zwei verschachtelte Schleifen anlegen, die äußere über die Container #einstellungx und die innere über die einzelnen Kästchen einsxy. Ich empfehle aber, damit gar nicht erst anzufangen, sondern statt dessen die Position der Container zu animieren. Dass das funktioniert, siehst Du ja an meinem Beispiel.

  • Ich empfehle aber, damit gar nicht erst anzufangen, sondern statt dessen die Position der Container zu animieren. Dass das funktioniert, siehst Du ja an meinem Beispiel.

    ja das ergibt ein sinn sollte einfacher sein .. nur sehe ich ein kleines problem....sagen wir mal der container ist 1000 px lang und wird zur seite rausgeschoben.... irgendwann ist er ja zu ende und muss von vorne anfangen ( wie bei dein beispiel ) jedesmal wenn er von vorne anfangen tut gibt es ein ruckeln bzw einen harten übergang. ich könnte den container ja 999999 px lang machen dann kommt das nur selten vor,aber das ist wohl eine pfusch lösung....nee andere idee währe eine rechts links animation,die man auch einbauen könnte,aber in meinen fall soll das erstmal nur in einer richtung laufen...wegen den übergang muss ich nee lösung finden damit man den nicht sehen tut ..

  • Zitat

    irgendwann ist er ja zu ende und muss von vorne anfangen ( wie bei dein beispiel ) jedesmal wenn er von vorne anfangen tut gibt es ein ruckeln bzw einen harten übergang.

    Um das zu vermeiden, muss man die Maße der Elemente genau berechnen. Bei den waagerechten Lauflichtern habe ich die Breite des Containers auf 200vw gesetzt, also die doppelte Breite des Browserfensters. Und die Anzahl der Kästchen darin muss durch 4 teilbar sein; in deinem Fall kannst Du ja die Werte in deinem select-Feld entsprechend fest legen. Wenn man dann genau auf -100vw nach links verschiebt und dann wieder bei 0vw anfängt, gibt es einen einwandfreien Übergang.

  • jetzt verstehe ich ich auch warum du die masseinheit "VW" genommen hast,weil die einheit sieht man ja sonst sehr selten... ich werde damit mal etwas rumtüfteln und mal kucken ob ich das alles so hinbekomme.... ich werde dann mein ergebniss presentieren....danke dir erstmal

  • nicht genau das obige, aber schau dir mal dies an und probiere es aus:

    Code
            for (var i = 0; i < nr; i++) {
                var box = document.createElement("div");
                box.style.width = width + "px";
                box.style.height = height + "px";
                lauflichtcontainer.appendChild(box);
            }

    ich benutze das für die divs zu erstellen bin da mit gerade am bauen und tüfteln,nur die divs werden untereinander angesetz,auch wenn der hauptcontainer eine feste breite und höhe kriegt zb width=100 height=20 px.... trotdem knallt er die untereinander weg ... benutze aber nicht deine beispiel css weil irgendwie will das nicht so wie ich das will...(dazu später mal mehr)... jetzt gehts nur drum wie ich die nebeneinander kriege ....für die seiten ist das ja ok aber nicht für die breite

  • Wenn man es richtig macht, will das garantiert. Die letzte Anweisung ordnet sie in einer Reihe an, d. h. nebeneinandert:

    Code
                #lauflichtcontainer {
                    width: 200vw;
                    position: relative;
                    top: 0;
                    left: 0;
                    animation: lauflicht 5s linear infinite;
                    display: flex;
                    flex-direction: row;
                }

    Und so in einer Spalte, d. h. untereinander:

    Code
                #lauflichtcontainer {
                    height: 200vh;
                    position: relative;
                    top: 0;
                    left: 0;
                    animation: lauflicht 5s linear infinite;
                    display: flex;
                    flex-direction: column;
                }

    Beachte auch, dass ich Breite durch Höhe ersetzt habe.

  • komischerweisse wird mir dir container jetzt ganz unten angezeigt obwohl ich ihn top:0 habe und position fixed ist ...ist das nicht merkwürdig??? steht aber jetzt nebeneinander


    EDIT; selbst wenn ich noch ein div rum herum baue mit top 0 und so weiter zeigt er mir bottom 0 an und auch nicht fixed



    Code
    for (var i = 0; i < mengediv; i++) {
                var box = document.createElement("div");
                box.style.width = width1 + "px";
                box.style.height = hohe + "px";
                lauflichtcontainer.appendChild(box);
            }

    gibt es dafür ein code um das alles zu löschen ...weil wenn ich wie bei meinscript mit onchange die anzahl ändere überschneidet sich alles weil alles dreifach und mehrfach da ist ....ich will vor jeden onchange die alten divs löschen und dann wieder neu erstellen .....oder gibt es da nee bessere lösung

  • Als ich versucht habe, das zu reproduzieren, hatte ich das gleiche Problem. Es lag dann daran, dass position und top oben notiert hatte und darunter noch Mal die gleichen Anweisungen kamen, die es überschrieben haben. Nachdem ich das korrigiert habe, funktioniert es einwandfrei.

  • kann das funktionieren ?? weil mein ergebniss ist irgendwie sehr merkwürdig....ziel ist es vorm erstellen die alten divs zu löschen damit beim neuen erstellen ( zb beim grösse oder farbe über onchange) kein chaos passiert


    habe das so


    Zitat
    Code
    box.id ="box'+i+'"

    funktioniert besser aber das ergebniss ist nicht das wie erwünscht

  • weiss nicht ob das so richtig ist aber funktioniert jetzt.....ich lösche einfach vor jeden onchange den hauptcontainer wo die divs rein kommen,dann geht es so wie ich es wollte ...


    mein code

    spinnt abeer trotzdem noch rum ist noch nicht 100 prozentig richtig ich muss da noch irgendwie nen fehler drinne haben

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!