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

Detaillierte Schritte zur Installation der XML-Erweiterung in PHP unter Linux

Installieren der XML-Erweiterung in PHP Linux 1. ...

Zusammenfassung zur Anwendung dekorativer Elemente im Webdesign

<br />Vorwort: Bevor Sie dieses Tutorial les...

Codebeispiele für allgemeine Docker-Datenvolumenvorgänge

Wenn der Entwickler Dockerfile zum Erstellen des ...

js verwendet Cookies, um die Seitenvorgänge des Benutzers zu speichern

Vorwort Während des Entwicklungsprozesses stoßen ...

Beim Hochladen von Bildern mit Axios in Vue sind Probleme aufgetreten

Inhaltsverzeichnis Was ist FormData? Eine praktis...

HTML-Hyperlinks im Detail erklärt

Hyperlink Hyperlinks sind die am häufigsten verwen...

WeChat-Applet zum Speichern von Alben und Bildern in Alben

Ich entwickle derzeit eine Video- und Tool-App, ä...

Eine kurze Erläuterung der Rolle des Parameters docker --privileged=true

Mit etwa Version 0.6 wurde Privileged in Docker e...

Tutorial zur Installation der DAMO-Datenbank auf Centos7

1. Vorbereitung Nach der Installation des Linux-B...

Über MySQL innodb_autoinc_lock_mode

Der Parameter innodb_autoinc_lock_mode steuert da...

MySQL-Gruppe durch Gruppieren mehrerer Felder

Bei täglichen Entwicklungsaufgaben verwenden wir ...