Tatsächlich ist die Wirkung wahrscheinlich folgende: Und der Titel spiegelt möglicherweise mein wahres Gefühl wider, als ich diesen Effekt sah. Denn die erste Reaktion ist: „Können wir die Seite auch aus der Gesamtseite raus verschieben?“ Entdecken Sie: Anwendung von Display-AnimationWas war die Ursache für das Ganze? Ich hatte vor kurzem vor, einen solchen Effekt auf der offiziellen Website eines Community-Projekts zu erstellen: Klicken Sie auf den Avatar, und von links/rechts gleitet ein „Panel“ heraus, das die persönlichen Informationen des Benutzers anzeigt. Natürlich gibt es viele Möglichkeiten, dies zu tun, wie zum Beispiel: durch Positionspositionierung + Überlauf-Überlauf-Verbergen, durch Opazität/Sichtbarkeit-Verbergen + Zeiger-Ereignisse-Elementdurchdringung ... Aber was mir damals einfiel, war, wie man zum „ echten Verbergen, Anzeigen “ eine Animation hinzufügen könnte! Was wir wahrscheinlich alle wissen, ist, dass während des HTML-Rendering-Prozesses ein „Reflow“- und „Repaint“-Prozess ausgeführt werden kann, der die Leistung der Seite beeinträchtigen kann. Es gibt viele Gründe, die dazu führen, dass dieser Prozess ausgelöst wird: Elementpositionsverschiebung, Größenänderung, Hinzufügen und Löschen von Knoten und das hier erwähnte Umschalten zwischen Anzeige und Ausblenden usw. Die Änderungen der Elemente müssen schnell auf der Seite angezeigt werden, damit sie für uns „abrupt“ erscheinen. /** CSS-Code */ Breite: 50px; Höhe: 50px; Hintergrundfarbe: rot; Anzeige: keine; transformieren: übersetzenX(0); Übergang: alle 0,6 Sekunden mühelos; //Scheint nutzlos? //js-Code ds.style.display="block"; ds.style.transform="übersetzenX(100px)"; Aber auch beim Bedienen der folgenden Eigenschaften gibt es aufgrund des Rendering-Mechanismus des Browsers einige APIs, die das Rendering der Seite erzwingen können (da detaillierte und genaue Informationen erforderlich sind), darunter: offsetTop, offsetLeft, offsetWidth, offsetHeight, scrollTop, scrollLeft, scrollWidth, scrollHeight, clientTop, clientLeft, clientWidth, clientHeight, getComputedStyle() (currentStyle in IE). Dies führt direkt dazu, dass die beiden Zeilen davor und danach einem „zweimaligen Rendern“ gleichkommen. Ändern Sie daher den obigen JS-Code wie folgt: //js-Code ds.style.display="block"; ds.OffsetHöhe; ds.style.transform="übersetzenX(100px)"; Das ist alles
Später fiel mir auf, dass diese Methode zum Ändern der Seitenstruktur JS erforderte, also … Implementierung: So erzielen Sie den Effekt der Anzeige der ersten Zeile des ArtikelsDies wird sich basierend auf der Positionspositionierung „überlappen“: Nachdem die Positionierungsattribute für zwei Inline-Elemente festgelegt wurden (aber keine Positionierung oben/links/unten/rechts hinzugefügt wurde), werden die letzteren die ersteren überdecken; zu diesem Zeitpunkt kann die Position verschoben und über den Rand angezeigt werden .
Der Aufbau ist etwa wie folgt: <div Klasse="Seitenliste"> <div Klasse="z_two_page"> <!-- Hier sind die Informationen, die im Popup-Fenster rechts angezeigt werden--> </div> <div Klasse="Box"> <!-- "Seite"-Maske --> <div Klasse="zb_mask"></div> <!-- Hier kommt die Datenstruktur „Seite“ hin (also alles, was unter dem Body-Tag stehen soll) --> </div> <!-- Dies ist ein Platzhalterelement--> <div Klasse="Leerzeichen"></div> </div> Tatsächlich sieht es so aus: <div Klasse="Seitenliste"> <div class="z_two_page">Hahaha</div> <div Klasse="Box"> <div Klasse="zb_mask"></div> <div id="Boxen"> <div Klasse="links" Stil="Hintergrundfarbe:#ffc5c5;"></div> <div Klasse="rechts" Stil="Hintergrundfarbe:#7171f7;"> Das zweispaltige Layout unter Flex ist links fest und rechts adaptiv </div> </div> <div Klasse="Farbe"></div> <a href="#" rel="external nofollow" class="a">Seien Sie vorsichtig, wenn Sie globale Stile für ein festlegen (dies wird als Stil-Reset bezeichnet)</a> <div Klasse="Mitte"> <div Klasse="ds"></div> <button class="but">Gehe zum angegebenen Ort</button> </div> <form id="form" action="#"> <input type="submit" value="="Fußleiste/> </form> <img id="img" src="komprimieren/komprimieren/img/mxc_16x16.png" /> </div> <div Klasse="Leerzeichen"></div> </div> Wie oben gezeigt, enthält das Div mit der Klasse „Box“ die „ursprüngliche gesamte Seite“. Um den gewünschten Effekt zu erzielen, verwenden wir Flex-Layout! Flex umfasst in abgekürzter Form drei Eigenschaften: Flex-Grow, Flex-Shrink und Flex-Basis –
Beim Einstellen müssen Sie das Breiten- oder Höhenattribut festlegen. /* Liste scrollt nur horizontal */ .page_list { Breite: 100vw; Anzeige: flex; Überlauf-y: versteckt; } /* Hauptinhaltsbreite 100 %, weiße Hintergrundabdeckung*/ .box { flex: 0 0 100vw; Höhe: 100 %; Hintergrundfarbe: #fff; Position: relativ; Überlauf-y: automatisch; Überlauf-x: verborgen; Übergang: alle 0,6 Sekunden; } /**Ebenenstil maskieren*/ .zb_mask{ Position: absolut; oben: 0; links: 0; Breite: 100 %; Höhe: 100%; Z-Index: 100; Hintergrundfarbe: rgba(0,0,0,.2); Zeigerereignisse: keine; Deckkraft: 0; Übergang: alles 0,6 s leicht; } /* Leeres Beschriftungselement, um Platz für horizontales Scrollen freizugeben*/ .Leerzeichen { flex: 0 0 12rem; } /* Der Button ist fest positioniert und hinter dem weißen Hintergrund des Inhalts versteckt*/ .z_two_page { Breite: 12rem; Position: fest; rechts: 0; oben: 0; } Das bedeutet: Es zeigt den Inhalt der Box an, ohne etwas zu tun (was den gleichen Effekt hat wie ohne die schicken Divs). Es verwendet
Die ersten beiden Flex-Attribute im Code haben den Wert 0, was bedeutet, dass der Abstand gleich bleibt, wenn er vergrößert oder verkleinert wird (das ist die Grundlage dieses Artikels!), und das dritte Element schreibt die „Standardgröße“ bei der Anzeige: Wie Sie sehen, hostet die Box die Seite, also ist sie Wie zeigen wir also „Hahahaha“ in unserem Sichtfeld an? —— js kann die Gesamtbewegung von „Elementen, die die Seite darstellen“ steuern. Hier gibt es einen „Maskenebeneneffekt“. Gemäß der herkömmlichen JS-Implementierung müssen Sie eine Anzeige finden. Sie können außerdem den oben erwähnten „Anzeigeanimationseffekt“ verwenden, um das Erlebnis zu verbessern. rechts lassen = document.querySelector(".right"); let box = document.querySelector(".box"); let mask = document.querySelector(".zb_mask"); rechts.beiKlick=Funktion(){ box.style.marginLeft="-12rem"; mask.style.cssText+="Deckkraft: 1; Zeigerereignisse: alle;" } mask.onclick=Funktion(){ box.style.marginLeft="0"; mask.style.cssText+="Deckkraft: 0; Zeigerereignisse: keine;" } Angesichts einiger Probleme bei der Anzeige von Seiten auf Mobilgeräten, beispielsweise des Leerraums auf der rechten Seite und der Auswirkung nativer Gesten auf die gesamte Seite, setzen wir in CSS normalerweise @media (any-hover: keine) { .Seitenliste{ Überlauf-x: versteckt; } } Dies ist das Ende dieses Artikels zur Untersuchung des Seitenleisteneffekts von JS-Seiten. Weitere relevante Inhalte zur Seitenleiste von JS-Seiten 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:
|
>>: Beispiel für die Verwendung von JS, um zu bestimmen, ob ein Element ein Array ist
Beängstigend, nicht wahr? Übersetzung im Bild: (v...
Inhaltsverzeichnis Vorwort Installieren Sie vue-i...
Die Offline-Installationsmethode von MySQL_8.0.2 ...
In diesem Artikel wird der spezifische Code von j...
Übergeben Sie einfach benutzerdefinierte Paramete...
1. Effekt-HTML senden <div id="senden-btn...
In diesem Artikelbeispiel wird der spezifische JS...
Vorwort Hallo zusammen, ich bin Liang Xu. Bei der...
Ich habe mich schon immer für drahtlose Interakti...
Die Konfiguration ist sehr einfach, aber ich muss...
1. Voraussetzungen 1. Das Projekt wurde bereitges...
1. Einleitung Wenn die Datenmenge in der Datenban...
Beim Entwickeln mobiler Apps stoßen Sie häufig au...
Inhaltsverzeichnis 1. Konzept Speicherverwaltungs...
Die Riddle-Sicherheitslücke, die auf die MySQL-Ve...