Vue implementiert Drag-Fortschrittsbalken

Vue implementiert Drag-Fortschrittsbalken

In diesem Artikelbeispiel wird der spezifische Code von Vue zur Realisierung des Drag-Fortschrittsbalkens zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Komponentencode:

<Vorlage>
 <div>
  <div Klasse="Schieberegler" ref="Schieberegler">
   <div Klasse="Prozess" :style="{ width }"></div>
   <div Klasse="thunk" ref="trunk" :style="{ left }">
    <div Klasse="Block"></div>
    <div class="Tipps">
     <!-- <span>{{scale*100}}</span> -->
     <i class="fas fa-caret-down"></i>
    </div>
   </div>
  </div>
  <div>
   <Schaltfläche
    @klick="
     () => {
      dies.per++;
     }
    "
   >
    +</Schaltfläche
   >{{ pro }}%<button
    @klick="
     () => {
      wenn (dies.per > 0) {
       dies.per--;
      }
     }
    "
   >
    -
   </button>
  </div>
 </div>
</Vorlage>
<Skript>
/*
 * min Mindestwert des Fortschrittsbalkens* max Höchstwert des Fortschrittsbalkens* v-model führt eine bidirektionale Bindung des aktuellen Werts durch, um den Drag-Fortschritt in Echtzeit anzuzeigen* */
Standard exportieren {
 Requisiten: ["min", "max", "Wert"],
 Daten() {
  zurückkehren {
   slider: null, //Bildlaufleiste DOM-Element thunk: null, //DOM-Element ziehen per: this.value, //Aktueller Wert};
 },
 //Beim Rendern auf der Seite mounted() {
  dieser.slider = dieser.$refs.slider;
  dies.thunk = dies.$refs.trunk;
  var _this = dies;
  this.thunk.onmousedown = Funktion (e) {
   var Breite = parseInt(_this.width);
   var disX = e.clientX;
   document.onmousemove = Funktion (e) {
    // Wert, links, Breite
    // Wenn sich der Wert ändert, werden die linke Seite und die Breite durch die berechneten Eigenschaften geändert

    // Neue Breite beim Ziehen ermitteln
    var neueWidth = e.clientX - disX + Breite;
    // Beim Ziehen den neuen Prozentsatz abrufen var scale = newWidth / _this.slider.offsetWidth;
    _this.per = Math.ceil((_this.max - _this.min) * Skala + _this.min);
    _this.per = Math.max(_this.per, _this.min);
    _this.per = Math.min(_this.per, _this.max);
    _this.$emit("Eingabe", _this.per);
   };
   dokument.onmouseup = Funktion () {
    Dokument.onmousemove = Dokument.onmouseup = null;
   };
   gibt false zurück;
  };
 },
 berechnet: {
  // Legen Sie einen Prozentsatz fest, um die Breite des Slider-Fortschritts und den linken Wert des Stamms zu berechnen // Die entsprechende Formel lautet aktueller Wert - Minimalwert / Maximalwert - Minimalwert = Breite des Slider-Fortschritts / Gesamtbreite des Slider
  // Rumpf links = Slider-Fortschrittsbreite + Rumpfbreite / 2
  Skala() {
   zurück (dieses.per - dies.min) / (dieses.max - dies.min);
  },
  Breite() {
   wenn (dieser.Schieberegler) {
    gib diese.Schieberegler-Offsetbreite * diese.Skala + "px" zurück;
   } anders {
    gibt 0 + "px" zurück;
   }
  },
  links() {
   wenn (dieser.Schieberegler) {
    zurückkehren (
     dieser.Schieberegler.OffsetWidth * dieser.Skala -
     diese.thunk.offsetWidth / 2 +
     "px"
    );
   } anders {
    gibt 0 + "px" zurück;
   }
  },
 },
};
</Skript>
<Stil>
.Kasten {
 Rand: 100px auto 0;
 Breite: 80%;
}
.klar:nach {
 Inhalt: "";
 Anzeige: Block;
 klar: beides;
}
.Schieberegler {
 Benutzerauswahl: keine;
 Position: relativ;
 Rand: 20px 0;
 Breite: 400px;
 Höhe: 10px;
 Hintergrund: #e4e7ed;
 Rahmenradius: 5px;
 Cursor: Zeiger;
}
.Schieberegler .Prozess {
 Position: absolut;
 links: 0;
 oben: 0;
 Breite: 112px;
 Höhe: 10px;
 Rahmenradius: 5px;
 Hintergrund: #81b159;
}
.slider .thunk {
 Position: absolut;
 links: 100px;
 oben: -7px;
 Breite: 20px;
 Höhe: 20px;
}
.Schieberegler .block {
 Breite: 20px;
 Höhe: 20px;
 Randradius: 50 %;
 Rand: 2px durchgezogen #409eff;
 Hintergrund: rgba(255, 255, 255, 1);
 Übergang: 0,2 s alles;
}
.Schieberegler .Tipps {
 Position: absolut;
 links: -7px;
 unten: 30px;
 Mindestbreite: 15px;
 Textausrichtung: zentriert;
 Polsterung: 4px 8px;
 /* Hintergrund: #000; */
 Rahmenradius: 5px;
 Höhe: 24px;
 Farbe: #fff;
}
.slider .tipps ich {
 Position: absolut;
 Rand links: -5px;
 links: 50%;
 unten: -9px;
 Schriftgröße: 16px;
 Farbe: #000;
}
.slider .block:hover {
 transformieren: Skalierung(1.1);
 Deckkraft: 0,6;
}
</Stil>

Anruf:

<Vorlage>
 <slider :min="0" :max="100" v-model="pro"></slider>
</Vorlage>

<Skript>
Schieberegler aus „@/components/slider“ importieren;
Standard exportieren {
 Daten() {
  zurückkehren {};
 },
 berechnet: {
  pro:
   erhalten() {
    gebe 0 zurück;
   },
   setze(Wert) {
    konsole.log(Wert);
   },
  },
 },
 Komponenten: {Schieberegler},
 montiert() {},
 Methoden: {},
};
</Skript>

<Stil>
</Stil>

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:
  • Beispiel für die Implementierung eines kreisförmigen Fortschrittsbalkens in Vue
  • vue.js + ElementUI realisiert den Effekt des Fortschrittsbalkens, der zur Kennwortstärke auffordert
  • Fortschrittsbalkenfunktion beim Laden der Vue-Seite (Beispielcode)
  • Kapselung des zyklischen Ladefortschrittsbalkens (Vue-Plug-in-Version und native JS-Version)
  • Vue konfiguriert nprogress, um den Fortschrittsbalken oben auf der Seite zu implementieren
  • So verwenden Sie den NProgress-Fortschrittsbalken in Vue
  • Das Vue-Projekt implementiert eine Fortschrittsbalkenfunktion für den Dateidownload

<<:  So installieren Sie eine MySQL-Datenbank im Deepin 2014-System

>>:  Drei Möglichkeiten zum Konfigurieren virtueller Nginx-Hosts (basierend auf Domänennamen)

Artikel empfehlen

Nginx definiert die Zugriffsmethode für Domänennamen

Ich erstelle derzeit Nginx, kann aber nicht über ...

Mysql praktische Übungen einfaches Bibliotheksverwaltungssystem

Inhaltsverzeichnis 1. Sortierfunktion 2. Vorberei...

Ändern Sie den Stil des HTML-Textkörpers in JS

Inhaltsverzeichnis 1. Ursprüngliche Definition 2....

Ein Artikel bringt Ihnen bei, sauberen JavaScript-Code zu schreiben

Inhaltsverzeichnis 1. Variablen Verwenden Sie aus...

Erste Schritte mit TS (TypeScript) im Vue-Projekt

Inhaltsverzeichnis 1. Einführung in Typescript 2....

Was ist TypeScript?

Inhaltsverzeichnis 1. JavaScript-Probleme 2. Vort...

Rückgängigmachen der Anmeldung in MySQL

Konzepteinführung: Wir wissen, dass das Redo-Log ...

Beispielcode mit Vue-Router in HTML

Einführung in Vue und Vue-Router <script src=&...

So erstellen Sie eine Liste in CocosCreator

CocosCreator-Version: 2.3.4 Cocos hat keine Liste...

Analyse der zum Ausführen von Docker erforderlichen Berechtigungen

Zum Ausführen von Docker sind Root-Rechte erforde...

JavaScript-Code zur Implementierung der Weibo-Batch-Unfollow-Funktion

Ein cooler JavaScript-Code, um Weibo-Benutzern st...

Detaillierte Schritte zur Installation von Docker 1.8 auf CentOS 7

Docker unterstützt die Ausführung auf den folgend...