Vue implementiert einen dynamischen kreisförmigen prozentualen Fortschrittsbalken

Vue implementiert einen dynamischen kreisförmigen prozentualen Fortschrittsbalken

Als ich kürzlich ein kleines Programm entwickelte, musste ich einen kreisförmigen prozentualen Fortschrittsbalken implementieren, der dem folgenden Entwurfsdiagramm ähnelt:

Als Neuling hatte ich das Gefühl, dass die Implementierung schwierig sein würde, also ging ich zu Baidu, um zu sehen, wie andere es gemacht haben, aber ich fand keine zufriedenstellende Lösung. Entweder war es eine statische Implementierung oder es waren viele DOM- Operationen erforderlich. Es ist besser, direkte DOM- Operationen in Miniprogrammen zu vermeiden.

Das Folgende ist eine dynamische Implementierung, die ich in Form einer Vue-Komponente erstellt habe. Hier ist zunächst das Effektdiagramm:

Wirkung

Implementierungsschritte

Kreisdiagramm zeichnen

.Kuchen {
  Anzeige: Inline-Block;
  Position: relativ;
  Breite: 150px;
  Höhe: 150px;
  Rand oben: 40px;
  Randradius: 50 %;
  Hintergrund: #ccc;
  Hintergrundbild: linearer Farbverlauf (nach rechts, transparent 50 %, #4479FD 0);
  Farbe: transparent;
  Textausrichtung: zentriert;
}

Proportionseffekt erzielen

Dies wird durch das Hinzufügen von Okklusion und Bewegung von Pseudoelementen erreicht. Der Code lautet wie folgt:

.pie::vor {
  Inhalt: '';
  Position: absolut;
  oben: 0; links: 50 %;
  Breite: 50 %; Höhe: 100 %;
  Randradius: 0 100 % 100 % 0 / 50 %;
  Hintergrundfarbe: erben;
  Transform-Origin: links;
  Animation: Drehung 5 s linear unendlich, Hintergrund 10 s Schritt-Ende unendlich;
}
@keyframes drehen {
  zu { transformieren: drehen(.5turn); }
}
@keyframes bg {
  50 % { Hintergrund: #4479FD; }
} 

Verwenden der CSS-Eigenschaft „Animation Delay“

Ändern Sie die Animationszeit oben auf 50 bzw. 100, so dass Sie die entsprechenden Verzögerungssekunden direkt in der Animationsverzögerung übergeben können. Beispielsweise werden -60 s bei 60 % angezeigt.

Animations-Wiedergabestatus: angehalten;
Animationsverzögerung: -60s;

Erreichen einer Torusform

Fügen Sie ein positioniertes Div direkt im Div hinzu

<div Klasse="Kuchen">
  <div Klasse="Kuchen-Innenteil">
  {{num}} %
  </div>
</div>

Fügen Sie eine Animation mit konstanter Geschwindigkeit hinzu

startAnimate (Schritt, Grenze, Geschwindigkeit) {
  setzeTimeout(() => {
  // Num ist ein Prozentsatz, wenn (this.num < Limit) {
      this.num += Schritt
      this.startAnimate(Schritt, Grenze, Geschwindigkeit)
    } anders {
      diese.Nummer = Grenze
    }
  }, Geschwindigkeit)
}

Binden Sie berechnete Eigenschaften an die Animationsverzögerung

Konvertieren Sie die Zahl in Echtzeit in die entsprechenden Verzögerungssekunden

berechnet: {
    Verzögerung () {
      gibt `-${this.num}s` zurück
    }
}

Zusammenfassen

Bisher wurde ein dynamischer, kreisförmiger prozentualer Fortschrittsbalken grundsätzlich realisiert, aber er ist noch nicht perfekt. Wenn Sie Kommentare oder Fragen haben, können Sie diese gerne stellen.

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:
  • Verwenden der Front-End- und Back-End-Interaktion von vue+ElementUI+echarts zum Realisieren dynamischer Donut-Diagramme im Springboot-Projekt (empfohlen)
  • Springboot verwendet die Front-End- und Back-End-Interaktion von Vue + Echarts, um dynamische Donut-Diagramme zu realisieren
  • Implementierung der Funktion der kreisförmigen prozentualen Fortschrittsbalkenkomponente von Vue
  • Beispiel für die Implementierung eines kreisförmigen Fortschrittsbalkens in Vue
  • Vue zeichnet dynamisch den Effekt eines Dreiviertel-Donut-Diagramms
  • Beispielcode für die Verwendung von Echarts zum Erstellen eines Donut-Diagramms in Vue
  • Vue verwendet Canvas, um einen Kreis zu zeichnen

<<:  Zugriffsvorgang im MySQL-Befehlszeilenmodus MySQL-Datenbankvorgang

>>:  Analyse des Prinzips und der Methode zur Implementierung einer Linux-Festplattenpartition

Artikel empfehlen

Zusammenfassung der Unterschiede zwischen SQL und NoSQL

Hauptunterschiede: 1. Typ SQL-Datenbanken werden ...

Die perfekte Lösung für das AutoFill-Problem in Google Chrome

In Google Chrome werden Sie nach der erfolgreiche...

CSS3 realisiert den roten Umschlag-Shaking-Effekt

Es besteht die Anforderung, den Schütteleffekt de...

HTML-Tabellen-Markup-Tutorial (18): Tabellenkopf

<br />Die Kopfzeile bezieht sich auf die ers...

So führen Sie SCSS in ein React-Projekt ein

Laden Sie zuerst die Abhängigkeiten herunter Garn...

Detaillierte Erklärung der MySQL-Dreiwertelogik und NULL

Inhaltsverzeichnis Was ist NULL Zwei Arten von NU...

Detaillierte Beschreibung des MySQL-Ersetzens in der Verwendung

Die Ersetzungsanweisung ähnelt im Allgemeinen der...

So blockieren und verbieten Sie Webcrawler im Nginx-Server

Jede Website stößt normalerweise auf viele Crawle...

So verwenden Sie Nginx als Load Balancer für MySQL

Hinweis: Die Nginx-Version muss 1.9 oder höher se...

HTML verwendet Laufschrift, um Text nach links und rechts scrollen zu lassen

Code kopieren Der Code lautet wie folgt: <KÖRP...

Grundlegende Hinweise zu HTML (empfohlen)

1. Grundstruktur der Webseite: XML/HTML-CodeInhal...

Multiservice-Image-Packaging-Vorgang von Dockerfile unter Aufsicht

Schreiben einer Docker-Datei Konfigurieren Sie di...

Implementierung des Element-UI-Layouts (Zeilen- und Spaltenkomponenten)

Inhaltsverzeichnis Grundlegende Anweisungen und V...