Vue realisiert den Prozentbalkeneffekt

Vue realisiert den Prozentbalkeneffekt

In diesem Artikel wird der spezifische Code von Vue zur Realisierung der Prozentleiste als Referenz bereitgestellt. Der spezifische Inhalt ist wie folgt

Rendern

1. Entsprechendes Verhältnis

/p>

2. Links 100 %

3. 100% richtig

Bildbeschreibung hier einfügen

Code-Implementierung

<Vorlage>
  <div Klasse="Über">
    <!-- <h1>Dies ist eine Infoseite</h1> -->
    <div Klasse="Schritt">
      <!-- Wenn die linke Seite 100 % beträgt, wird das Hypothenuse-Dreieck nicht angezeigt und der rechte Winkel wird vergrößert-->
      <div
        Klasse="links"
        v-show="linkerProzentsatz"
        :Klasse="[{ 'full-left': !rightPercent }, { 'tringle': rightPercent }]"
        :Stil="{ Breite: linkerProzentsatz+'%' }"
        @mouseover="onMouseTooltip(LINKE LEISTE, TIP ANZEIGEN)"
        @mouseleave="onMouseTooltip(LINKE LEISTE, TIP AUSBLENDEN)"
      >
        <div Klasse = "bar-tip-box" v-show = "leftBar.isShowTip">
          <p>Gesamt: {{ totalNum }}</p>
          <p>Grüner Prozentsatz: {{ leftPercent }}%</p>
        </div>
        <div Klasse = "Tip-Pfeil" v-show = "leftBar.isShowTip"></div>
        {{ leftPercent }}%
      </div>
      <div
        Klasse="richtig"
        v-show="richtigerProzentsatz"
        :Klasse="[{ 'full-right': !leftPercent }]"
        @mouseover="onMouseTooltip(RECHTE_LEISTE, TIP_ANZEIGEN)"
        @mouseleave="onMouseTooltip(RECHTE_LEISTE, TIP AUSBLENDEN)"
      >
        <div Klasse = "bar-tip-box" v-show = "rightBar.isShowTip">
          <p>Gesamt: {{ totalNum }}</p>
          <p>Grauanteil: {{ rightPercent }}%</p>
        </div>
        <div Klasse = "Tip-Pfeil" v-show = "rightBar.isShowTip"></div>
        {{ rightPercent }}%
      </div>
    </div>
  </div>
</Vorlage>

<Skript>
const LEFT_BAR = "links";
const RIGHT_BAR = "rechts";
const SHOW_TIP = "anzeigen";
const HIDE_TIP = "ausblenden";

Standard exportieren {
  Daten() {
    zurückkehren {
      LINKE_LEISTE: LINKE_LEISTE,
      RECHTE_LEISTE: RECHTE_LEISTE,
      TIPP ANZEIGEN: TIPP ANZEIGEN,
      HIDE_TIP: HIDE_TIP,
      Gesamtanzahl: 1000,
      leftPercent: 100,
      linkeLeiste: {
        isShowTip: false,
        delayOut: null
      },
      rechte Leiste: {
        isShowTip: false,
        delayOut: null
      }
    };
  },
  Methoden: {
    beiMausTooltip(tipTyp, aktionsTyp) {
      lass bar = null;
      wenn (tipType == LEFT_BAR) {
        Balken = diese.linkeLeiste;
      } sonst wenn (tipType == RIGHT_BAR) {
        bar = diese.rechteLeiste;
      } anders {
        zurückkehren;
      }
      wenn (Aktionstyp === SHOW_TIP) {
        this.showBarTooltip(Leiste);
      } sonst wenn (Aktionstyp === HIDE_TIP) {
        this.hideBarTooltip(bar);
      } anders {
        zurückkehren;
      }
    },
    showBarTooltip(bar) {
      if (bar.delayOut != null) {
        Zeitüberschreitung löschen(bar.delayOut);
      }
      bar.delayOut = null;
      bar.isShowTip = true;
    },
    hideBarTooltip(Leiste) {
      Zeitüberschreitung löschen(bar.delayOut);
      bar.delayOut = setzeTimeout(Funktion() {
        bar.isShowTip = falsch;
      }, 100);
    },
  },
  berechnet: {
    rechterProzentsatz: Funktion(){
      gibt 100 zurück – this.leftPercent;
    }
  }
};
</Skript>

<style lang="less" scoped>
.Schritt {
  Position: relativ;
  Anzeige: Flex;
  Rand: 100px;
  Breite: 200px;
  Schriftgröße: 0;
  .links {
    Flex-Wachstum: 0;
    Position: relativ;
    Anzeige: Inline-Block;
    Hintergrund: #62c87f;
    Farbe: #fff;
    Textausrichtung: zentriert;
    Schriftstärke: fett;
    Breite: 70%;
    Schriftgröße: 12px;
    Zeilenhöhe: 20px;
    Höhe: 20px;
    Mindestbreite: 30px;
    Rahmen oben links – Radius: 5px;
    Rahmen unten links – Radius: 5px;
  }
  // Diese Pseudoklasse wird nicht immer angezeigt.tringle::after {
    Inhalt: " ";
    Position: absolut;
    oben: 0;
    rechts: -8px;
    Rahmenbreite: 20px 8px;
    Rahmenstil: durchgezogen;
    Rahmenfarbe: #62c87f transparent transparent transparent;
    Z-Index: 10;
  }

  .Rechts {
    Flex-Wachstum: 1;
    Position: relativ;
    Anzeige: Inline-Block;
    /* Breite: 30 %; */
    Hintergrund: #d0d4dc;
    Farbe: #333;
    Schriftstärke: fett;
    Textausrichtung: zentriert;
    Schriftgröße: 12px;
    Zeilenhöhe: 20px;
    Höhe: 20px;
    Textausrichtung: zentriert;
    Mindestbreite: 35px;
    Rahmen oben rechts – Radius: 5px;
    Rahmen unten rechts – Radius: 5px;
  }

  .ganz links{
    Rahmen oben rechts – Radius: 5px;
    Rahmen unten rechts – Radius: 5px;
  }

  .vollständig rechts{
    Rahmen oben links – Radius: 5px;
    Rahmen unten links – Radius: 5px;
  }

  .Spitze-Pfeil {
    Position: absolut;
    links: 50%;
    oben: -10px;
    Anzeige: Inline-Block;
    Breite: 7px;
    Höhe: 7px;
    transformieren: drehenZ(45 Grad);
    -webkit-transform:rotateZ(45 Grad);
    Hintergrundfarbe: #7f7f7f;
    Z-Index: 10;
  }

  .bar-tip-box {
    Position: absolut;
    oben: -5px;
    rechts: 50%;
    transformieren: übersetzen(50 %, -100 %);
    Textausrichtung: links;
    Polsterung: 5px 10px;
    Breite: maximaler Inhalt;
    Farbe: #fff;
    Schriftgröße: 12px;
    Schriftstärke: 400;
    Rahmenradius: 3px;
    Hintergrundfarbe: #7f7f7f;
    Z-Index: 10;

    P {
      Rand: 0;
      Polsterung unten: 5px;
    }
  }
}
</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:
  • Details zum Schreiben von React in einem Vue-Projekt
  • Vue+Element implementiert Dropdown-Menü mit lokaler Suchfunktion – Beispiel
  • So verwenden Sie wangEditor in Vue und erhalten durch Echo von Daten den Fokus
  • Vergleich der Vorteile von vue3 und vue2
  • Vue realisiert einen dynamischen Fortschrittsbalkeneffekt
  • Vue implementiert einen dynamischen kreisförmigen prozentualen Fortschrittsbalken
  • So implementieren Sie verschiebbare Komponenten in Vue
  • Acht Möglichkeiten zur Implementierung von Kommunikation in Vue

<<:  Verwendung des Linux-Befehls ls

>>:  Analyse des Implementierungsprozesses der drei Modi des VMWare-Netzwerkadapters

Artikel empfehlen

Verwendung der VUE-Renderfunktion und ausführliche Erklärung

Inhaltsverzeichnis Vorwort Die Rolle des Renders ...

CSS-Implementierungscode zum Zeichnen von Dreiecken (Rahmenmethode)

1. Implementieren Sie ein einfaches Dreieck Mithi...

Zusammenfassung der Verwendung von clipboard.js

Inhaltsverzeichnis (1) Einleitung: (2) Zum Kopier...

Detaillierte Erklärung der Destrukturierungszuweisung in JavaScript

Inhaltsverzeichnis Konzept Array-Destrukturierung...

Docker-Bereitstellungs- und Installationsschritte für Jenkins

Zuerst benötigen wir einen Server mit installiert...

Designbeispiele für Dropdown-Menüs und Schiebemenüs

Ich habe viele Websites gefunden, die Dropdown- od...

So fügen Sie Tastenkombinationen in Xshell hinzu

Als nützlicher Terminalemulator wird Xshell häufi...

Über Zabbix Admin-Login vergessen Passwort zurücksetzen

Das Problem beim Zurücksetzen des Passworts für d...

So öffnen Sie externe Netzwerkzugriffsrechte für MySQL

Wie unten dargestellt: Führen Sie hauptsächlich A...

Verwendung des MySQL-Stresstesttools Mysqlslap

1. MySQLs eigenes Stresstest-Tool Mysqlslap mysql...

Vue-Interpretation der responsiven Prinzip-Quellcode-Analyse

Inhaltsverzeichnis Initialisierung initState() in...

Zusammenfassung des Wissens zum MySQL-Protokoll

Inhaltsverzeichnis SQL-Ausführungsreihenfolge Bin...