vorgenannt Dieser Artikel ist sehr kurz~ TextIch habe vor Kurzem eine kleine Aktivität gemacht, bei der ein Effekt erforderlich war: das Schieben zum Umblättern von Seiten . Wahrscheinlich ist es so: <!-- HTML-Code --> <div Klasse="Seitencontainer"> <div Klasse="Seite" Stil="Hintergrund: #dc3b26">1</div> <div Klasse="Seite" Stil="Hintergrund: #f3b03d">2</div> <div Klasse="Seite" Stil="Hintergrund: #44a2f8">3</div> </div> Da wir in CSS zum Umblättern die Seiten verschieben, müssen wir zunächst sicherstellen, dass „immer nur ein Bildschirm vorhanden ist“, was im globalen Stylesheet gesteuert werden kann. Anschließend muss „jede Seite“ das gesamte übergeordnete Element einnehmen. Hier verwenden wir tatsächlich die Funktion „div ist ein Blockelement, das ohne externe Kraft vertikal angeordnet wird“. /** CSS-Stil */ html, Körper{ Rand: 0; Polsterung: 0; Breite: 100 %; Höhe: 100vh; Überlauf: versteckt; Schriftgröße: 60px; } .Seitencontainer{ Breite: 100 %; Höhe: 100%; } .Seitencontainer .Seite{ Breite: 100 %; Höhe: 100%; } Auch die JS-Implementierung ist sehr einfach: Da sie sich auf dem mobilen Endgerät befindet, werden
// Hier ist die Datei, die das globale js steuert // Verhindert global das Standardverhalten des Browsers document.addEventListener("touchstart",function(e){ wenn(e.stornierbar){ e.preventDefault(); } },{passiv: false}) // {passive: false} teilt dem vorherigen Code mit, dass es möglicherweise notwendig sein könnte, das Verhalten zurückzusetzen document.addEventListener("touchmove",function(e){ wenn(e.stornierbar){ e.preventDefault(); } },{passiv: false}) // JavaScript-Code let curPageIndex=0; let pageContainer = document.querySelector(".page-container"); let pageNumber=pageContainer.children.length; //Anzahl der Seiten// Höhe des Dokumentfensters (hier ist die Höhe eines Bildschirms) let cHeight=document.documentElement.clientHeight; // Setzen Sie den oberen Rand des Seitencontainers auf einen geeigneten Wert, sodass er in der Ansichtsfunktion toPage(){ angezeigt wird. pageContainer.style.transition="alle 0,5 Sekunden einfach"; pageContainer.style.marginTop=-curPageIndex*cHeight+"px"; // Entfernen Sie den Übergangseffekt, nachdem die Änderung abgeschlossen ist! pageContainer.addEventListener("Übergangsende",Funktion(){ pageContainer.style.transition="keine"; },{einmal:wahr}) } zuSeite() pageContainer.ontouchstart=Funktion(e){ let y=e.changedTouches[0].clientY; //Die vertikale Koordinate des mit dem Finger gedrückten Seitencontainer.ontouchmove=function(e){ let dis=e.changedTouches[0].clientY-y; //Abstand berechnen // Oberen Rand des Seitencontainers berechnen let mtop=-curPageIndex*cHeight+dis wenn(mtop>0){ mtop=0; }sonst wenn(mtop<-(Seitennummer-1)*cHöhe){ mtop=-(Seitennummer-1)*cHöhe; } //Position in Echtzeit ändern pageContainer.style.marginTop=mtop+"px"; } pageContainer.ontouchend=Funktion(e){ let dis = e.changedTouches[0].clientY-y; // Wenn die Gleitstrecke zu kurz ist, kehre zur Position vor dem Gleiten zurück if(Math.abs(dis)<=60){ zuSeite() }sonst wenn(dis>0 && curPageIndex>0){ aktuellerSeitenindex--; zuSeite() }sonst wenn(dis<0 && aktuellerSeitenindex<Seitennummer-1){ aktuellerSeitenindex++; zuSeite() } //Nachdem der Finger gegangen ist, brechen Sie das Überwachungsereignis ab pageContainer.ontouchmove=null; pageContainer.ontouchend=null; } } Bisher scheint die Funktionalität perfekt. Aber dieses Mal fügen wir der ersten Seite eine Schaltfläche hinzu: <div Klasse="Seite" Stil="Hintergrund: #dc3b26"> <button onclick="alert('哈哈哈哈')" class="but">klick mich!</button> 1 </div> Gehen Sie dann auf die Seite, um den Effekt zu sehen: ungültig! Dies liegt daran, dass wir oben in der globalen JS-Datei den Code zum „Verhindern von Browser-Standardereignissen“ hinzugefügt haben. Aber wie oben gezeigt, wird ein umfassendes Verbot immer zu Problemen führen. Was sollen wir tun? <button data-default="true" onclick="alert('哈哈哈哈')" class="but">klick mich!</button> Ändern Sie den Inhalt der obigen „Datei, die globale js steuert“ wie folgt: // Standardverhalten des Browsers global verhindern document.addEventListener("touchstart",function(e){ wenn(e.target.dataset.default){ zurückkehren; } wenn(e.stornierbar){ e.preventDefault(); } },{passiv: false}) document.addEventListener("touchmove",Funktion(e){ wenn(e.target.dataset.default){ zurückkehren; } wenn(e.stornierbar){ e.preventDefault(); } },{passiv: false}) Es ist OK: Tatsächlich gibt es noch eine andere „Lösung“: Wie oben erwähnt, wird der mobile Klick tatsächlich durch das Mausereignis simuliert, sodass wir mit dem Mousestart-Ereignis beginnen können. Und da das Schaltflächenelement ein (untergeordnetes) Element auf der „ersten Seite“ ist, können wir die Methode verwenden , um das Aufsteigen des Ereignisses zu verhindern : <!-- Button ist ein normaler Button --> <button class="but">klick mich!</button> document.querySelector(".but").addEventListener("touchstart",function(e){ e.stopPropagation(); alert('Alarmwarnung'); },FALSCH)
Dies ist das Ende dieses Artikels über die Implementierung von gleitenden Seitenumblättereffekten und Klickereignisproblemen auf mobilen Endgeräten. Weitere relevante Inhalte zu gleitenden Seitenumblättereffekten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Linux-Plattform MySQL ermöglicht Remote-Login
>>: Sprechen Sie über wichtige Unterverzeichnisprobleme im Linux-System
Trennung von statischer und dynamischer Dynamisch...
Wir verwenden den Parameter „translate“, um Beweg...
Schritte zur Sicherung des SVN-Dienstes 1. Quells...
Wichtige Daten müssen gesichert werden, und zwar ...
Vorwort: Letzten Sonntag bat mich ein Senior, ihm...
Konfigurieren des Alibaba Cloud Docker Container ...
Das Problem mit dem verstümmelten Code ist folgen...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 1. Projektbeschreibung: 2. Pro...
Dieser Artikel beschreibt, wie Sie MySQL zum Expo...
1. Herunterladen Zunächst möchte ich einen inländ...
Inhaltsverzeichnis Voraussetzungen Einrichten ein...
In diesem Artikelbeispiel wird der spezifische Co...
<br />Beim Textdesign konzentrieren wir uns ...
Inhaltsverzeichnis Umgebungsbeschreibung Installi...