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

So erstellen Sie Benutzer und verwalten Berechtigungen in MySQL

1. So erstellen Sie einen Benutzer und ein Passwo...

MySQL8.0.18-Konfiguration mehrerer Master und eines Slaves

Inhaltsverzeichnis 1. Realistischer Hintergrund 2...

MySQL SHOW PROCESSLIST unterstützt den gesamten Prozess der Fehlerbehebung

1. SHOW PROCESSLIST-Befehl SHOW PROCESSLIST zeigt...

So installieren Sie Composer unter Linux

1. Laden Sie das Installationsskript - composer-s...

Detaillierte Erklärung zum virtuellen Javascript-DOM

Inhaltsverzeichnis Was ist virtueller Dom? Warum ...

Nginx: Ein Domänenname für den Zugriff auf mehrere Projekte – Methodenbeispiel

Hintergrund Kürzlich stieß ich bei der Bereitstel...

So verwenden Sie die HTML 5 Drag & Drop-API in Vue

Die Drag & Drop-API fügt ziehbare Elemente zu...

Zusammenfassung der englischen Namen chinesischer Schriftarten

Wenn Sie in CSS die Eigenschaft „font-family“ ver...

Beispiel einer Vorrendering-Methode für eine Vue-Einzelseitenanwendung

Inhaltsverzeichnis Vorwort vue-cli 2.0 Version vu...

Zwei gängige Lösungen für den HTML-Textüberlauf zeigen Auslassungszeichen an

Methode 1: Verwenden Sie zur Lösung die CSS-Überl...

JavaScript implementiert die asynchrone Übermittlung von Formulardaten

In diesem Artikelbeispiel wird der spezifische Ja...