Natives JS zum Erzielen eines Puzzle-Effekts

Natives JS zum Erzielen eines Puzzle-Effekts

In diesem Artikel wird der spezifische Code von nativem js zur Erzielung des Puzzle-Effekts als Referenz freigegeben. Der spezifische Inhalt ist wie folgt

Voraussetzung: Bei jedem Seiten-Update werden die Fragmentbilder zufällig im Container rechts angeordnet. Drücken und ziehen Sie die Maus nach links. Innerhalb eines bestimmten Bereichs der richtigen Koordinaten wird das Bild automatisch adsorbiert. Die platzierten Fragmente können nicht mehr gezogen werden.

Schauen wir uns zunächst die Wirkung an:

js-Code:

//Führen Sie die ursprüngliche Funktion aus init();
Funktion init() {
    //Einen Fragmentcontainer erstellen var frag = document.createDocumentFragment();
    Dokument.Body.Style.Margin = "0px";
    //Erstelle den linken Bildcontainer var ul=createE("ul",{
        Breite: "260px",
        Höhe: "400px",
        Hintergrundbild: "url(./img/3.jpg)",
        borderRight: "1px durchgezogen #000",
        Rahmen unten: "1px durchgehend #000",
        Listenstil: "keine",
        Polsterung: "0px",
        Rand: "0px",
        Deckkraft: ".3",
        Position: "absolut"
    })
    //Erstelle li, um den Rahmen im Bild anzuzeigen var li=createE("li",{
        Breite: "51px",
        Höhe: "79px",
        borderLeft: "1px durchgezogen #000",
        Rahmen oben: "1px durchgehend #000",
        Polsterung: "0px",
        Rand: "0px",
        float: "links"
    })
    //Schleife, kopiere li und füge es in ul ein for (i = 0; i < 25; i++) {
        ul.appendChild(li.cloneNode(false));
    }
    //ul in den Fragmentcontainer einfügen frag.appendChild(ul);
    //Erstelle den Bildcontainer rechts. Da img relativ zum Body positioniert werden muss, kann der übergeordnete Container keine Positionierungsattribute haben var div = createE("div",{
        Breite: "302px",
        Höhe: "302px",
        Rahmen: "1px durchgezogen #000",
        Rand links: "400px"
    })
    //Bild-Tags erstellen für (var j = 0; j < 5; j++) {
        für (var k = 0; k < 5; k++) {
            var img = createE("img",{
                Breite: "52px",
                Höhe: "80px",
                Position: "absolut",
                links: Math.floor(Math.random() * 250) + 400 + "px",
                oben: Math.floor(Math.random() * 220) + "px"
            })
            img.src = "./img/img" + j + "-" + k + ".jpg";
            //Bild hört auf MouseHandler-Ereignisse img.addEventListener("mousedown", mouseHandler);
            div.appendChild(img);
        }
    }
    //Div in den Fragmentcontainer einfügen und dann Frag in den Textkörper einfügen frag.appendChild(div);
    Dokument.body.appendChild(frag);
}
//Mausereignisfunktion mouseHandler(e) {
    Schalter (e.Typ) {
        Fall „mousedown“:
            // Lösche den Standardeffekt des Verschiebens des Bildes nach dem Klicken auf e.preventDefault();
            Konsole.log(diese.src.match(/img\/img(.*)\.jpg/))
            //Nummer im Bildpfad abrufen und korrekte Positionskoordinaten des Bildes berechnen var imgSrc = this.src.match(/img\/img(.*)\.jpg/)[1].split("-");
            var rightL=imgSrc[1]*52;
            var rightTop=imgSrc[0]*80;
            //Wenn das Bild richtig platziert ist, direkt rausspringen if (this.style.left===rightL+"px" && this.style.top===rightTop+"px") return;
            //Setze den Z-Index des aktuellen Bildes auf das Maximum this.style.zIndex = "999";
            //e.offsetX, e.offsetY und das aktuell angeklickte Bildobjekt im Dokument speichern document.x = e.offsetX;
            Dokument.y = e.offsetY;
            Dokument.elem = dies;
            Dokument.rightL=rightL;
            Dokument.rightTop=rightTop;
            //Dokument wartet auf Mousemove- und Mouseup-Ereignisse document.addEventListener("mousemove", mouseHandler);
            document.addEventListener("mouseup", Maus-Handler);
            brechen;
        Fall "Mausbewegung":
            //Automatischer Adsorptionsabstand var gap = 20;
            //Stellen Sie das aktuelle Bild so ein, dass es mit der Maus verschoben wird let x=e.clientX - this.x;
            sei y = e.clientY - dies.y;
            dieses.elem.style.left = x + "px";
            dieses.elem.style.top = y + "px";
            //Wenn die Positionskoordinaten des aktuellen Bildes innerhalb eines bestimmten Bereichs liegen, lass es automatisch adsorbieren, wenn (x>=this.rightL-gap &&x<=this.rightL+gap&&
                y>=diese.rechteOberseite-Lücke &&y<=diese.rechteOberseite+Lücke) {
                dies.elem.style.left = dies.rightL + "px";
                dies.elem.style.top = dies.rightTop + "px";
            }
            brechen;
        Fall "mouseup":
            //Wenn die Maus losgelassen wird, reduziere den Z-Index des aktuellen Bildes this.elem.style.zIndex = "10";
            //Nach dem Loslassen der Maus die Mousemove- und Mouseup-Ereignisse des Dokuments entfernen, die Daten löschen und Inhaltsverlust verhindern. this.removeEventListener("mousemove", mouseHandler);
            this.removeEventListener("mouseup", Maus-Handler);
            dies.elem=null;
            brechen;
    }
}
//Erstelle eine Tag-Funktion createE(elem,styleData){
    var elem = document.createElement(elem);
    für (var prep in styleData) {
        elem.style[prep]=styleData[prep];
    }
    Rücklaufelement;
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • js + canvas realisiert die Funktion des Schiebepuzzle-Verifizierungscodes
  • JS realisiert drei Effekte des PC-Mobilterminals und des eingebetteten Schiebepuzzle-Verifizierungscodes
  • js realisiert das Neun-Quadrat-Puzzlespiel
  • JS implementiert schnell mobile Puzzlespiele
  • JS-Puzzlespiel, objektorientiert, vollständig kommentiert.
  • js+html5 realisiert ein Puzzlespiel, das auf Mobiltelefonen gespielt werden kann
  • Digitaler Puzzlespielcode in JS geschrieben [Lernreferenz]
  • JS implementiert ein vollständiges Beispiel einer Schiebepuzzle-Verifizierungsfunktion
  • Beispielcode zur Simulation der Funktionsweise des Schiebepuzzle-Verifizierungscodes mit Node.js
  • Bilderrätsel-Gedächtnistestspiel, Web- und JS-Version

<<:  Linux /etc/network/interfaces Konfigurationsschnittstellenmethode

>>:  Beispiel zum Überprüfen der Kapazität einer MySQL-Datenbanktabelle

Artikel empfehlen

Docker+Nextcloud zum Erstellen eines persönlichen Cloud-Speichersystems

1. Docker-Installation und -Start yum installiere...

So überwachen Sie MySQL mit Zabbix

Dokumentation zur Zabbix-Bereitstellung Nach der ...

Analysieren Sie den Unterschied zwischen ES5 und ES6

Inhaltsverzeichnis Überblick Funktionssignatur Op...

HTML+CSS-Implementierungscode für abgerundete Rechtecke

Mir war langweilig und plötzlich fiel mir die Impl...

So erstellen Sie einen vollständigen Samba-Server unter Linux (CentOS-Version)

Vorwort smb ist der Name eines Protokolls, das fü...

Mysql Sql-Anweisungsübungen (50 Fragen)

Tabellenname und Felder –1. Studentenliste Studen...

js implementiert ein einfaches Warenkorbmodul

In diesem Artikelbeispiel wird der spezifische Co...

Docker-Installations- und Konfigurationsschritte für das Redis-Image

Inhaltsverzeichnis Vorwort Umfeld Installieren Er...