Implementierungscode für mehrzeilige Textkomponenten der Vue-Faltanzeige

Implementierungscode für mehrzeilige Textkomponenten der Vue-Faltanzeige

Faltdisplay mit mehrzeiligem Textbaustein

Falten und Anzeigen mehrzeiliger Textkomponenten, automatisches Bestimmen, ob entsprechend der eingehenden Erweiterung gefaltet werden soll. Zwei Modi: Erweitern/Reduzieren, um den vollständigen Text anzuzeigen (Standard), Popover, um den vollständigen Text anzuzeigen

Erstens der Code

<Vorlage>
  <div Klasse="text-expand" ref="textExpand">
    <div v-if="!(showPopover && showPopoverJudge)">
      <span class="text-expand-content" :style="expandStyle">
        {{ (Text === null || Text === undefiniert || Text === '') ? '--' : Text }}
      </span>
      <div Klasse="Expander">
        <span
          v-if="showBtn && showBtnJudge"
        >
          <span
            v-if="!Vollständige Anzeige"
            Klasse = "Aktion, Aktion-erweitern"
            @click.stop="showFullFn(true)"
          >
            Erweitern<i v-if="showBtnIcon" class="iconfont iconxiajiantou" />
          </span>
          <span
            v-sonst
            Klasse = "Aktion Aktionspaket"
            @click.stop="showFullFn(false)"
          >
            Ausblenden <i v-if="showBtnIcon" class="iconfont iconshangjiantou" />
          </span>
        </span>
      </div>
    </div>
    <el-popover
      v-sonst
      :Platzierung="Popover-Platz"
      Auslöser="hover">
      <div Klasse="Popover-Inhalt">
        {{ text }}
      </div>
      <span class="text-expand-content" :style="expandStyle" slot="reference">{{ text }}</span>
    </el-popover>
  </div>
</Vorlage>
<Skript>
Standard exportieren {
  Name: "TextExpand",
  Requisiten: {
    text: { // Textinhaltstyp: String,
      Standard: () => '
    },
    expand: { // Falten und die Anzahl der Zeilen anzeigen Typ: Zahl,
      Standard: () => 3
    },
    showBtn: { // Erweitern, Reduzieren Schaltflächentyp: Boolean,
      Standard: true
    },
    showBtnIcon: { // Symbol erweitern, reduzieren
      Typ: Boolean,
      Standard: true
    },
    showPopover: { // Popover zeigt den gesamten Text an Typ: Boolean,
      Standard: false
    },
    popoverPlace: { // Popover-Position Typ: String,
      Standard: „unten“
    }
  },
  Daten () {
    zurückkehren {
      showFull: false, // Ob der vollständige Text angezeigt werden soll expandStyle: '',
      showBtnJudge: false, //Beurteilen, ob die Schaltfläche gefaltet und angezeigt werden soll. showPopoverJudge: false //Beurteilen, ob das Popover gefaltet und angezeigt werden soll.
    }
  },
  betrachten:
    Text: Funktion (Wert) {
      dies.richterExpand()
    }
  },
  montiert () { 
    dies.richterExpand()
  },
  Methoden: {
    showFullFn (Wert) {
      this.expandStyle = Wert? '': `Anzeige: -webkit-box; Wortumbruch: alles umbrechen; -webkit-Zeilenklemme: ${this.expand}; -webkit-box-orient: vertikal; Textüberlauf: Auslassungspunkte; Überlauf: ausgeblendet;`
      this.showFull = Wert
    },
    judgeExpand () { //Beurteilen, ob dies reduziert werden soll.$nextTick(() => {
        const { expand } = dies;
        const textExpandStyle = window.getComputedStyle(this.$refs.textExpand)
        const textExpandHeight = parseFloat(textExpandStyle.height) //Gesamthöhe ermitteln const textExpandLineHeight = parseFloat(textExpandStyle.lineHeight) //Zeilenhöhe ermitteln // Zeilenhöhe berechnen const rects = Math.ceil(textExpandHeight / textExpandLineHeight)
        if (rects <= expand) { // Kein Ausklappen und Anzeigen nötig.showBtnJudge = false
          this.showPopoverJudge = falsch
        } anders {
          this.showBtnJudge = wahr
          this.showPopoverJudge = true
          this.expandStyle = `Anzeige: -webkit-box;Worttrennung: alles umbrechen;-webkit-Zeilenklemme: ${this.expand};-webkit-box-orient: vertikal;Textüberlauf: Auslassungspunkte;Überlauf: ausgeblendet;`
        }
      })
    }

  }
}
</Skript>
<style lang="less" scoped>
.text-expand{
  &-Inhalt{
    Wörtertrennung: alles trennen;
    Leerzeichen: vor dem Umbruch;
  }
  .expander {
    Textausrichtung: links;
    Rand oben: 6px;
    .Aktion {
      Anzeige: Inline-Block;
      Schriftgröße: 14px;
      Farbe: #0281F0;
      Cursor: Zeiger;
      ich {
        Anzeige: inline;
        Schriftgröße: 12px;
      }
    }
    .Aktion.Aktionspaket {
      Rand links: 0;
    }
  }
}
.popover-Inhalt{
  maximale Breite: 40vw;
  max. Höhe: 30vh;
  Überlauf: versteckt;
  Wörtertrennung: alles trennen;
  Überlauf-y: automatisch;
}
</Stil>

Verwendung

<text-expand :text="text" :expand="2" />

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

<text-expand :text="text" :expand="2" :showBtnIcon="false">

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen

<text-expand :text="text" :expand="2" :showPopover="true">

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die mehrzeilige Textkomponente von Vue Folding Display. Weitere verwandte Inhalte zu mehrzeiligen Textkomponenten von Vue Folding Display finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Beispiel für die Anzeige einer zusammenklappbaren Liste mit V-for-Schleifen in Vue2.0
  • Vue implementiert eine Eingabekomponente, die den Tastenkombinationseffekt der Tastenanzeige erhält
  • Die Vue+elementUI-Komponente implementiert rekursiv eine faltbare, dynamische Rendering-Seitenleistennavigation auf mehreren Ebenen
  • Verwenden rekursiver Vue.js-Komponenten zum Implementieren eines einklappbaren Baummenüs (Demo)

<<:  Allgemeine Struktur-Tags in XHTML

>>:  Analyse des Implementierungsprozesses der Docker-Intranet-Penetration-FRP-Bereitstellung

Artikel empfehlen

Was Sie über die Transaktionsisolierung von msyql wissen müssen

Was ist eine Transaktion? Eine Transaktion ist ei...

Lösung zur Bereinigung des Docker-Festplattenspeichers

Vor einiger Zeit stieß ich auf das Problem, dass ...

Navigationsdesign und Informationsarchitektur

<br />Wenn wir über Navigation sprechen, geh...

Idea konfiguriert Tomcat zum Starten eines Webprojekts - Grafik-Tutorial

Tomcat konfigurieren 1. Klicken Sie auf „Konfigur...

Beheben von Problemen mit hoher MySQL-CPU-Auslastung

Hohe CPU-Last durch MySQL Heute Nachmittag habe i...

Detailliertes Tutorial zur Installation und Bereitstellung von Nginx Linux

1. Einführung in Nginx Nginx ist ein Webserver, d...

Tutorial zum Ändern von Inline-Stilen von element.style

Vorwort Als wir den Stil der Webseite oben geschr...

Die Vor- und Nachteile von Nginx und LVS und ihre geeignete Nutzungsumgebung

Lassen Sie uns zu Beginn darüber sprechen, was La...

Beispiel für ein WeChat-Applet zum Erzielen des rotierenden Laterneneffekts

Vorwort In der täglichen Entwicklung stoßen wir h...

Eine kurze Diskussion über den Unterschied zwischen src und href in HTML

Einfach ausgedrückt bedeutet src „Ich möchte dies...

Einfacher Webseitencode, der im NetEase-Blog verwendet wird

So verwenden Sie den Code im NetEase-Blog: Melden...

Detaillierte Einführung in die Grundkonzepte von JS

Inhaltsverzeichnis 1. Eigenschaften von JS 1.1 Mu...