Die Implementierung eines benutzerdefinierten Karusselldiagramms mit vue+rem dient Ihnen als Referenz. Die spezifischen Inhalte sind wie folgt Für das Seitenlayout ist die Einheit rem. Bei der dynamischen Berechnung der Gesamtbreite des Karussells muss px in rem umgewandelt werden, was ziemlich mühsam ist. Die Auswirkung ist folgende: Wenn das aktuelle Bild nicht das erste oder das letzte Bild ist, können Sie vom aktuellen Bild nur einen Teil des vorherigen und des nächsten Bildes sehen. Der spezifische Code lautet wie folgt <Vorlage> <div Klasse="KonstruktionUp"> <div Klasse="pub-hd"> <h2>Bau-Upgrade-Paket</h2> <h3>Zusätzliche Dienste</h3> </div> <div id="AktivitätsDiv"> <ul num="0" id="AktivitätUl"> <li Klasse="AktivitätLi" v-for="(v,i) in Listendaten" :Schlüssel="i" @touchstart.capture="touchStart" @touchend.capture="touchEnd"> <img src="static/imgs/package/bitmap.jpg"> <div Klasse="liText"> <p class="liTtitle">{{v.lititle}}</p> <p class="liDes">1. Nach Baubeginn führen Kunde, Designer und Projektmanager eine Besprechung vor Ort durch. Bei persönlichen Projektänderungen werden die normalen Kundenänderungsverfahren befolgt (siehe: Kundenänderungsmitteilung);</p> <p class="liDes">2. Wenn der Kunde nach dem Briefing aus irgendeinem Grund Änderungen am personalisierten Projekt wünscht, muss er neben den Kosten für das personalisierte Projekt auch die zusätzliche Überweisungsgebühr bezahlen. </p> <p Klasse="liPreis"> <span class="title1">Preis des Themenpakets:¥</span> <span class="title2">4500</span> <span class="title3">Yuan</span> </p> </div> </li> </ul> <div Klasse="ZeigerDiv"> <span :class="[currantIndex ===0 ? 'aktiv' : '', 'Zeiger']"></span> <span :class="[currantIndex ===1 ? 'aktiv' : '', 'Zeiger']"></span> <span :class="[currantIndex ===2 ? 'aktiv' : '', 'Zeiger']"></span> </div> </div> </div> </Vorlage> <Skript> Standard exportieren { Daten () { zurückkehren { listData: [{lititle: 'Altbausanierung'}, {lititle: 'Altbausanierung 2'}, {lititle: 'Altbausanierung 3'}], liBreite: 0, liNummer: 0, startX: 0, EndeX: 0, aktuellerIndex: 0, Test: falsch } }, montiert () { dies.initUlWidth() }, Methoden: { initUlWidth () { // Initialisiere die Breite von ul let pit = document.documentElement.clientWidth / 750 // Das Verhältnis des aktuellen Handy-Bildschirms zum 750-Bildschirm let oldWidth = document.getElementsByClassName('activityLi')[0].offsetWidth // Die Breite eines einzelnen li let marginR = getComputedStyle(document.getElementsByClassName('activityLi')[0], null)['marginRight'] // Hole ein einzelnes marginRight, mit px lass marginNum = parseInt(marginR.replace('px', '')) this.liWidth = oldWidth + marginNum // einzelne Breite + maringRight let liCount = parseInt(document.getElementsByClassName('activityLi').length)// Anzahl der li this.liNum = liCount let ULpx = oldWidth * liCount + (liCount - 1) * marginNum // Der letzte Rand wird nicht gezählt document.getElementById('activityUl').style.width = ULpx / pit + 'px' // Durch das Verhältnis dividieren, damit die aktuelle Div-Breite dem Zweifachen des Designverhältnisses entspricht, die Länge von ul festlegen und der letzte Rand wird nicht gezählt }, touchStart (e) { // Notieren Sie die Anfangsposition e.preventDefault() // Verhindern Sie Standardereignisse, Scrollen usw. this.startX = e.touches[0].clientX // Notieren Sie die Position, an der das Gleiten beginnt }, touchEnd (e) { e.preventDefault() // Standardereignisse verhindern // Endposition aufzeichnen this.endX = e.changedTouches[0].clientX // Nach links wischen, wenn (this.startX - this.endX > 30) { console.log('Nach links wischen') wenn (dieser.currantIndex >= diese.liNum - 1) { // Keine Operation } else { dies.currantIndex++ document.getElementById('activityUl').style.left = -this.currantIndex * this.liWidth + 'px' } } // Nach rechts wischen, wenn (this.startX - this.endX < -30) { wenn (this.currantIndex === 0) { // Keine Operation } else { dies.currantIndex-- document.getElementById('activityUl').style.left = -this.currantIndex * this.liWidth + 'px' } } this.startX = 0 dies.endX = 0 } } } </Skript> <style lang="less" scoped> @import "~less/base.less"; .KonstruktionUp{ Breite: 100 %; .pub-hd{ Polsterung: 0,8rem 0 0,6rem 0; Textausrichtung: zentriert; Hintergrundfarbe: #ffffff; h2{ Schriftgröße: 0,32rem; Farbe: #606771; } h3{ Rand oben: 0,26rem; Schriftgröße: 0,24rem; Farbe: #b9bec4; } } #AktivitätDiv{ Polsterung links: 0,4rem; Hintergrundfarbe: #ffffff; Überlauf: versteckt; #AktivitätUl{ Position: relativ; links: 0; Höhe: 8,06rem; Übergang: alle .35s sanft ein- und ausfahren; Hintergrundfarbe: #ffffff; .activityLi{ schweben: links; Breite: 6,7rem; Höhe: 8,06rem; &:nicht(:letztes-Kind){ Rand rechts: 0,3rem; } Kastenschatten: 0 5px 25px 0 rgba(0,0,0,.4); img{ Breite: 100 %; Höhe: 3,6rem; } .liText{ Polsterung: 0 0,4rem; Textausrichtung: links; .liTtitle{ Polsterung: 0,48rem 0 0,36rem 0; Schriftgröße: 0,34rem; Farbe: #000000; } .liDes{ Schriftgröße: 0,2rem; Farbe: #b5b5b5; } } .liPreis{ Höhe: 0,28rem; Zeilenhöhe: 0,28rem; Farbe: @c-main; //Ändern Sie einfach die Farbe vertical-align: bottom; Rand oben: 0,8rem; .title1{ Anzeige: Inline-Block; Schriftgröße: 0,22rem; } .title2{ Anzeige: Inline-Block; Schriftgröße: 0,35rem; } .title3{ Anzeige: Inline-Block; Schriftgröße: 0,22rem; } } } } .pointerDiv{ Breite: 100 %; Höhe: 1,54rem; Hintergrundfarbe: #ffffff; Anzeige: Flex; Elemente ausrichten: zentrieren; Inhalt ausrichten: zentriert; .Zeiger{ Anzeige: Inline-Block; Breite: 0,16rem; Höhe: 0,16rem; Hintergrundfarbe: #cccccc; Randradius: 100 %; &:n-tes-Kind(2){ Rand: 0 0,4rem; } &.aktiv{ Hintergrundfarbe: @c-main; } } } } } </Stil> Um Tutorials zu Vue.js-Komponenten zu erhalten, klicken Sie bitte auf das spezielle Lern-Tutorial zu Vue.js-Komponenten. Weitere Vue-Lern-Tutorials finden Sie im Spezialthema „Vue-Praxis-Tutorial“. 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:
|
>>: Installieren Sie Tomcat und stellen Sie die Website unter Linux bereit (empfohlen)
Vorwort Ich habe kürzlich etwas über MySQL-Indize...
Ich bin bei der Arbeit auf einen Fall gestoßen, ü...
Wenn wir den Quellcode vieler Websites überprüfen...
1. Grundlegende Verwendung <!DOCTYPE html> ...
Dieser Artikel beschreibt die Bereitstellungsmeth...
Dieser Artikel enthält die Zusammenfassung des JS...
Offizielle Website-Adresse der Echarts-Komponente...
Inhaltsverzeichnis Vorwort Funktionsüberladung Zu...
„Entwicklung ist mehr als nur Code schreiben“ stam...
Ich bin vor Kurzem auf ein Problem gestoßen, als ...
Die Datei /etc/network/interfaces wird in Linux z...
„Eingaben sollten in logische Gruppen unterteilt ...
Inhaltsverzeichnis Vorwort Start React-Lebenszykl...
In Gästebüchern, Foren und anderen Orten werden i...
Inhaltsverzeichnis 1. Installation 2. Importieren...