Vue realisiert den gesamten Prozess der Slider-Drag-Verifizierungsfunktion

Vue realisiert den gesamten Prozess der Slider-Drag-Verifizierungsfunktion

Rendern

Definieren Sie das Skelett, schreiben Sie HTML und CSS

HTML-Teil

<Vorlage>
    <div Klasse="drag-wrapper" ref="dragDiv">
        <div Klasse="drag_bg"></div>
        <div class="drag_text f14">{{ Wörter bestätigen }}</div>
        <!-- Verschobene Module -->
        <div ref="VerschiebeDiv"
             @mousedown="mousedownFn($event)"
             :Klasse="{'handler_ok_bg': Erfolg bestätigen}"
             Klasse="Handler handler_bg"></div>
    </div>
</Vorlage>

CSS-Teil: Aufgrund von Bedenken hinsichtlich der Bildquelle wird es als Base64-Bild geschrieben

<Stilbereich>
    .ziehen{
        Position: relativ;
        Hintergrundfarbe: #e8e8e8;
        Breite: 100 %;
        Höhe: 40px;
        Zeilenhöhe: 40px;
        Textausrichtung: zentriert;
    }
    .handler{
        Breite: 40px;
        Höhe: 40px;
        Rand: 1px durchgezogen #ccc;
        Cursor: bewegen;
        Position: absolut;oben: 0px;links: 0px;
    }
    .handler_bg{
        background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8++IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;
    }
    .handler_ok_bg{
        background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8++IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;
    }
    .drag_bg{
        Hintergrundfarbe: #7ac23c;
        Höhe: 40px;
        Breite: 0px;
    }
    .Text ziehen{
        Position: absolut;
        oben: 0px;
        Breite: 100 %; Textausrichtung: zentriert;
        -moz-Benutzerauswahl: keine;
        -webkit-Benutzerauswahl: keine;
        Benutzerauswahl: keine;
        -o-Benutzerauswahl: keine;
        -ms-Benutzerauswahl: keine;
    }
</Stil>

Implementieren Sie die Gleit- und Ziehüberprüfung

Parameter definieren

Daten() {
    zurückkehren {
        beginClientX:0, // Abstand vom linken Ende des BildschirmsmouseMoveStata:false, // Beurteilung des Drag-Status auslösenmaxwidth:'', // Maximale Drag-Breite, berechnet basierend auf der Slider-BreiteconfirmWords:'Drag-Slider-Überprüfung', // Slider-TextconfirmSuccess:false // Beurteilung der erfolgreichen Überprüfung}
}

1. Berechnen Sie bei der Montage die maximale verschiebbare Breite basierend auf der Schiebereglerbreite und achten Sie auf Fingerberührungs- und -verlassensereignisse

montiert() {
    // Berechnen Sie die maximale verschiebbare Breite basierend auf der Schiebereglerbreite this.maxwidth = this.$refs.dragDiv.clientWidth - this.$refs.moveDiv.clientWidth
    // Auf Fingerberührungsereignisse achten document.getElementsByTagName('html')[0].addEventListener('mousemove', this.mouseMoveFn)
    // Auf Ereignisse beim Weggehen des Fingers achten document.getElementsByTagName('html')[0].addEventListener('mouseup', this.moseUpFn)
}

2. Schreiben Sie Ereignisse für das Gleiten und Weggehen des Fingers

Mousemove-Ereignis

Bestimmen Sie zunächst, ob der Drag-Zustand ausgelöst wird, berechnen Sie dann die Drag-Distanz und die Moduldistanz und weisen Sie Werte in Echtzeit zu

//Erfolg prüfen Funktion mouseMoveFn(e){
    wenn(diese.mouseMoveStata){
        let width = e.clientX - this.beginClientX
        wenn(Breite > 0 && Breite <= diese.maxbreite) {
            document.getElementsByClassName('handler')[0].style.left = Breite + 'px'
            document.getElementsByClassName('drag_bg')[0].style.width = Breite + 'px'
        }sonst wenn(Breite > diese.max.Breite) diese.Erfolgsfunktion()
    }
},

Mouseup-Ereignis

Ändern Sie den Drag-Status auf „false“ und bewegen Sie den Schieberegler an die entsprechende Fingerablageposition.

moseUpFn(e) {
    this.mouseMoveState = !1 // Status ändern const width = e.clientX - this.beginClientX // Breite berechnen und abrufen if (width < this.maxwidth) { // Wenn die Breite kleiner als die Breite des Moduls ist, einen Wert zuweisen document.getElementsByClassName('handler')[0].style.left = 0 + 'px'
        document.getElementsByClassName('drag_bg')[0].style.width = 0 + 'px'
    }
}

Im Handlerblock des HTML-Abschnitts oben wird das Mousedown-Ereignis definiert (mousedownFn($event))

Es ist notwendig, das Standardverhalten des Browsers wie die Dateiauswahl zu verhindern, den Schwellenwert zum Auslösen des Ziehzustands zu aktivieren und die Entfernung aufzuzeichnen, über die sich der Finger bewegt

Mauszeiger nach untenFn:Funktion (e) {
    e.preventDefault && e.preventDefault() // Verhindere standardmäßige Browserereignisse wie die Textauswahl this.mouseMoveStata = true // Öffne den Schwellenwert zum Auslösen des Drag-Zustands this.beginClientX = e.clientX // Zeichne die Distanz auf, über die sich der Finger bewegt},

An diesem Punkt ist die Funktion abgeschlossen. .

Der vollständige JS-Code lautet wie folgt

<Skript>
    Standard exportieren {
        Daten(){
            zurückkehren {
                beginClientX:0, /*Abstand vom linken Bildschirmende*/
                mouseMoveStata:false, /*Beurteilung des Drag-Status auslösen*/
                maxwidth:'', /*Maximale Drag-Breite, berechnet basierend auf der Slider-Breite*/
                confirmWords: „Ziehen Sie den Schieberegler zur Bestätigung“, /*Schiebereglertext*/
                confirmSuccess:false /*Beurteilung über erfolgreichen Abschluss der Überprüfung*/
            }
        },
        montiert(){
            this.maxwidth = this.$refs.dragDiv.clientWidth - this.$refs.moveDiv.clientWidth
            document.getElementsByTagName('html')[0].addEventListener('mousemove',this.mouseMoveFn)
            document.getElementsByTagName('html')[0].addEventListener('mouseup',this.moseUpFn)
        },
        Methoden: {
            Mauszeiger nach untenFn:Funktion (e) {
                wenn(!this.confirmSuccess){
                    e.preventDefault && e.preventDefault() //Textauswahl und andere Standardereignisse des Browsers verhindern this.mouseMoveStata = true
                    this.beginClientX = e.clientX
                }
            },
            //mousedoen Ereignis Erfolgsfunktion () {
                this.confirmSuccess = wahr
                this.confirmWords = 'Verifizierung erfolgreich'
                dies.$emit('onValidation', true)
                wenn(window.addEventListener){
                    document.getElementsByTagName('html')[0].removeEventListener('mousemove',this.mouseMoveFn)
                    document.getElementsByTagName('html')[0].removeEventListener('mouseup',this.moseUpFn)
                }sonst document.getElementsByTagName('html')[0].removeEventListener('mouseup',()=>{})
                document.getElementsByClassName('drag_text')[0].style.color = '#fff'
                document.getElementsByClassName('handler')[0].style.left = this.maxwidth + 'px'
                document.getElementsByClassName('drag_bg')[0].style.width = this.maxwidth + 'px'
            },
            //Erfolg prüfen Funktion mouseMoveFn(e){
                wenn(diese.mouseMoveStata){
                    let width = e.clientX - this.beginClientX
                    wenn(Breite > 0 && Breite <= diese.maxbreite) {
                        document.getElementsByClassName('handler')[0].style.left = Breite + 'px'
                        document.getElementsByClassName('drag_bg')[0].style.width = Breite + 'px'
                    }sonst wenn(Breite > diese.max.Breite) diese.Erfolgsfunktion()
                }
            },
            //Mausbewegungsereignis moseUpFn(e){
                this.mouseMoveStata = false
                var Breite = e.clientX - this.beginClientX
                wenn(Breite<diese.maxBreite){
                    document.getElementsByClassName('handler')[0].style.left = 0 + 'px'
                    document.getElementsByClassName('drag_bg')[0].style.width = 0 + 'px'
                }
            }
        }
    }
</Skript>

Zusammenfassen

Dies ist das Ende dieses Artikels über die Implementierung der Slider-Drag-Verifizierungsfunktion von Vue. Weitere relevante Inhalte zur Slider-Drag-Verifizierung von Vue 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:
  • Beispielcode für die Drag & Drop-Implementierung des Vue-Moduls
  • Verwenden Sie die Konva- und Vue-Konva-Bibliotheken, um die Drag-Slider-Verifizierungsfunktion zu implementieren

<<:  Zwei Methoden der MySql-Kommaverkettungs-Stringabfrage

>>:  So verwenden Sie den Linux-Befehl nl

Artikel empfehlen

Beispiel für die Implementierung des Lastausgleichs mit Nginx+SpringBoot

Einführung in den Lastenausgleich Bevor wir die L...

Methoden für JavaScript-String-Objekte

Inhaltsverzeichnis Methoden des String-Objekts Me...

Verwenden Sie sauberes HTML-Markup zum Erstellen Ihrer Seiten

Das Internet ist ein Organismus, der sich ständig...

Vue.js verwendet Element-ui, um das Navigationsmenü zu implementieren

In diesem Artikel wird der spezifische Code zur I...

Lernen Sie die schwarze Technologie der Union-All-Verwendung in MySQL 5.7 in 5 Minuten

Leistung von „Union All“ in MySQL 5.6 Teil 1: MyS...

Führen Sie die folgenden Schritte aus, damit Docker Images abrufen kann

1. Docker Pull zieht das Image Wenn Sie zum Abruf...

JavaScript, um den Effekt des Tab-Leistenwechsels zu erzielen

Registerkartenleiste: Klicken Sie auf verschieden...

Eine kurze Diskussion über die Leistungsprobleme des MySQL-Paging-Limits

MySQL-Paging-Abfragen werden normalerweise über L...

Eine kurze Analyse der expliziten Typkonvertierung von MySQL

CAST-Funktion Im vorherigen Artikel haben wir die...

Beispiel für die Implementierung einer eingebetteten Tabelle mit vue+elementUI

Während meines Praktikums im letzten Studienjahr ...

Detaillierte Erläuterung des CocosCreator-Projektstrukturmechanismus

Inhaltsverzeichnis 1. Projektordnerstruktur 1. As...