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

IE6 implementiert min-width

Zunächst einmal wissen wir, dass dieser Effekt ei...

Allgemeine Linux-Befehle chmod zum Ändern der Dateiberechtigungen 777 und 754

Der folgende Befehl wird häufig verwendet: chmod ...

Detaillierte Erklärung der Verwendung des Fuser-Befehls in Linux

beschreiben: fuser kann anzeigen, welches Program...

Erfahren Sie mehr über den Hyperlink A-Tag

fragen: Ich habe den Hyperlink mit CSS formatiert...

Detaillierter Vue-Code zur Implementierung der Shuttle-Box-Funktion

Vue - Implementierung der Shuttle-Box-Funktion. D...

Informieren Sie sich, wie HTML und Ressourcen geladen werden

Der gesamte Inhalt dieses Blogs ist unter Creativ...

Wie implementiert MySQL ACID-Transaktionen?

Vorwort Kürzlich wurde ich in einem Interview gef...

Detaillierte Beschreibung von Shallow Copy und Deep Copy in js

Inhaltsverzeichnis 1. js-Speicher 2. Abtretung 3....