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

Detaillierte Erläuterung des CocosCreator-Projektstrukturmechanismus

Inhaltsverzeichnis 1. Projektordnerstruktur 1. As...

So gehen Sie mit vergessenen Passwörtern in Windows Server 2008 R2 um

Was tun, wenn Sie Windows Server 2008R2 vergessen...

Detaillierte Erläuterung der Verwendung des DockerHub-Image-Repository

Bisher wurden die von uns verwendeten Images alle...

Detaillierte Schritte zum Erweitern der LVM-Festplatte unter Linux

1. Fügen Sie eine Festplatte hinzu 2. Überprüfen ...

SQL Left Join und Right Join - Prinzip und Beispielanalyse

Es gibt zwei Tabellen, und die Datensätze in Tabe...

JavaScript zum Erreichen eines einfachen Seiten-Countdowns

In diesem Artikelbeispiel wird der spezifische Ja...

Schritte zur Installation von GRUB auf einem Linux-Server

So installieren Sie GRUB für Linux Server Sie kön...

Fünf Möglichkeiten zum automatischen Seitensprung in HTML

Im vorherigen Artikel haben wir drei gängige Meth...

Beispiel für die Verwendung einer Keep-Alive-Komponente in Vue

Problembeschreibung (was ist Keep-Alive) Keep-Ali...

Detaillierte Erklärung von Group By und Having in MySQL

Mit der GROUP BY-Syntax können die Abfrageergebni...

Der Unterschied zwischen MySQL execute, executeUpdate und executeQuery

Die Unterschiede zwischen „execute“, „executeUpda...

Welcher Befehl eignet sich besser für die unscharfe Suche nach Dateien in Linux?

1. Einleitung In diesem Artikel wird hauptsächlic...

MariaDB-Remote-Login-Konfiguration und Problemlösung

Vorwort: Der Installationsvorgang wird nicht im D...