Vue imitiert den Karusselleffekt von Ctrip (gleitendes Karussell, unten hochadaptiv)

Vue imitiert den Karusselleffekt von Ctrip (gleitendes Karussell, unten hochadaptiv)

Schauen wir uns zuerst den Fall an. Verwenden Sie zur Implementierung vue+swiper. Wenn die Folie unterschiedliche Höhen hat, wird die Höhe der Box dynamisch berechnet, um die Höhe darunter adaptiv zu machen.

Bildbeschreibung hier einfügen

Erstellen Sie zuerst das Vue-Projekt. Ich werde es hier nicht im Detail erklären. Installieren Sie dann Swiper.

npm installiere swiper --save-dev

1. js-Teil: Initialisieren Sie die Swiper-Komponente. Vue muss im gemounteten Lebenszyklus initialisiert werden. Der Code lautet wie folgt:

Swiper von „swiper“ importieren
importiere { TweenMax, Power2 } von 'gsap' 

Bildbeschreibung hier einfügen

Die Resize-Funktion wird während der Initialisierung aufgerufen, um die Breite und Höhe des Bildschirmcontainers zu berechnen. Der Code lautet wie folgt

// Bildschirmbreite und -höhe neu berechnen resize(swiper) {
	this.clientWidth = Dokument.documentElement.clientWidth||Dokument.body.clientWidth;
	this.clientHeight = document.documentElement.clientHeight||document.body.clientHeight;
	dies.zeichnen(swiper)
},

Nach der Berechnung wird die Zeichenfunktion aufgerufen, um die Höhe des Karussellbehälters dynamisch entsprechend der Gleitbewegung zu berechnen. Beachten Sie, dass hier auf das TweenMax-Framework verwiesen wird und dieses vor der Verwendung installiert werden muss. Detaillierte Verwendungsmethoden finden Sie auf der offiziellen Website von TweenMax

npm installiere gsap -D

Sehen wir uns zunächst an, wie TweenMax verwendet wird.

Bildbeschreibung hier einfügen

// Höhe des Swiper-Containers dynamisch berechnen draw(swiper) {
				TweenMax.to(this.tweenObj, 0.5, {übersetzen: swiper.translate, ease: Power2.easeOut,
					beiUpdate: () => {
						lass übersetzen = this.tweenObj.translate
						// Linker Folienindex let iLeft = Math.floor(-translate / this.clientWidth)
						wenn (iLeft > diese.Folienlänge) {
							iLeft = diese.slidesLength
						}
						// Rechter Folienindex let iRight = iLeft + 1
						wenn (iRight > diese.Folienlänge) {
							iRight = diese.Folienlänge
						}
						für (lass i = 0; i < this.swiperSlide.length; i++) {
							//Wenn die Bildbreite den gesamten Bildschirm abdeckt, beträgt die Höhe jedes Bildes this.swiperSlide[i].fullHeight = this.clientWidth/this.swiperSlide[i].getBoundingClientRect().width * this.swiperSlide[i].getBoundingClientRect().height;
						}
						//Bewegungsverhältnis Die Höhe ändert sich während der Bewegung von 0 über 1 zu 0 let percent = Number((-translate / this.clientWidth).toFixed(5)) - iLeft
						//Entsprechend den linken und rechten Bildern und dem Bewegungsverhältnis wird die entsprechende Höhe ermittelt. let currentHeight = (this.swiperSlide[iRight].fullHeight - this.swiperSlide[iLeft].fullHeight)*Prozent + this.swiperSlide[iLeft].fullHeight
						// Höhe des Karussellcontainers swiper.el.style.height = currentHeight + 'px'
					}
				})
			}

2.html Teil

<!--Imitation des Karusselleffekts von Ctrip-->
	<div Klasse="swiper-demo">
		<div Klasse="Swiper-Container">
			<div Klasse="swiper-wrapper">
			<!--Hier muss unbedingt die Höhe vergrößert werden, sonst gibt es Probleme! ! ! -->
				<div Klasse="swiper-slide" Stil="Höhe: 222px;">
					<div Klasse="wrap" v-for="(Element, Index) in Kategorie1" :key="index">
						<img src="../assets/wish.png" alt="">
						<span>{{item.name}}</span>
					</div>
				</div>
					<!--Hier muss unbedingt die Höhe vergrößert werden, sonst gibt es Probleme! ! ! -->
				<div Klasse="swiper-slide" Stil="Höhe: 400px;">
					<div Klasse="wrap" v-for="(Element, Index) in Kategorie2" :key="index">
						<img src="../assets/wish.png" alt="">
						<span>{{item.name}}</span>
					</div>
				</div>
			</div>
		</div>

		<div style="background: salmon; height: 80vh">Schreiben Sie Ihre eigene Benutzeroberfläche</div>
	</div>

Hinweis: swiper-slide muss die Höhe erhöhen, sonst gibt es Probleme

3. CSS-Teil

.swiper-slide {
		Breite: automatisch;
		Höhe: 100%;
		Anzeige: Flex;
		Flex-Wrap: Umwickeln;
		Inhalt ausrichten: Abstand dazwischen;
	}
	.wickeln {
		Breite: 24%;
		Höhe: 100px;
		Anzeige: Flex;
		Flex-Richtung: Spalte;
		Elemente ausrichten: zentrieren;
		Inhalt ausrichten: zentriert;
	}
	img {
		Breite: 60px;
	}

Auf diese Weise wird ein hochadaptiver Karusselleffekt erreicht. Drei oder mehr Karussells sind kein Problem. Wenn es dir gefällt, folge uns bitte. Hehe~

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über den Vue-Imitations-Ctrip-Karusselleffekt (gleitendes Karussell, unten hochadaptiv). Weitere relevante Vue-Karussellinhalte finden Sie in den vorherigen Artikeln von 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:
  • Vue implementiert die Idee und Beispielanalyse der Bildkarussellkomponente
  • Beispielcode zur Implementierung eines Bildkarussells in Vue ohne DOM-Betrieb
  • Implementierungscode für den benutzerdefinierten JS-Bildfragment-Karussell-Umschalteffekt von Vue
  • Detaillierte Erläuterung der Idee, mit Vue eine Bildkarussellkomponente zu erstellen
  • Vue kapselt Swiper, um den Bildkarusselleffekt zu realisieren
  • Ein Beispiel für die Verwendung von Vue zur Implementierung einer mobilen Bildkarussellkomponente
  • Verwenden von vueJs zum Implementieren von Beispielcode für Bildkarussells
  • VUE entwickelt einen Beispielcode für eine Bildkarussell-Komponente
  • Realisierung des Bildkarusselleffekts basierend auf vue.js
  • Vue implementiert automatisch gleitende Karussellbilder

<<:  Anfangseinstellungen nach der Installation von Ubuntu 16 in der Entwicklungsumgebung

>>:  Zusammenfassung mehrerer wichtiger Methoden zur Berechnung und Optimierung des Leistungsindex für MySQL

Artikel empfehlen

Zwei Möglichkeiten zum Erstellen von Docker-Images

Inhaltsverzeichnis Aktualisieren Sie das Bild von...

HTML-Tutorial: Ungeordnete Liste

<br />Originaltext: http://andymao.com/andy/...

Schritte zum Importieren von Millionen von Daten in MySQL mit .Net Core

Inhaltsverzeichnis Vorbereitende Vorbereitung Imp...

HTML/CSS (der erste Leitfaden, den Anfänger unbedingt lesen sollten)

1. Die Bedeutung von Webstandards verstehen - War...

Liste der HTML-Tags und Hinweise zur Verwendung

Liste der HTML-Tags markieren Typ Name oder Bedeu...

Eine kurze Diskussion über JS-Verpackungsobjekte

Inhaltsverzeichnis Überblick Definition Instanzme...

So sichern und wiederherstellen Sie die MySQL-Datenbank, wenn sie zu groß ist

Befehl: mysqlhotcopy Dieser Befehl sperrt die Tab...

Implementierung eines Random Roll Callers basierend auf JavaScript

In diesem Artikel wird der spezifische JavaScript...

Lassen Sie Ihren Text mit dem Marquee-Attribut in HTML tanzen

Syntax: <marquee> …</marquee> Mithilfe...

Lösungen für MySQL-Batch-Insert- und eindeutige Indexprobleme

MySQL-Batch-Einfügeproblem Da bei der Entwicklung...

Lösung für das MySQL-Fehlerproblem 1045 (28000)

Ich bin auf den MySQL-FEHLER 1045 gestoßen und ha...

Best Practices-Handbuch zum Speichern von Daten in MySQL

Inhaltsverzeichnis Vorwort Verwenden Sie keine Ze...