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

Implementierungsbeispiel für die Nginx-Zugriffskontrolle

Über Nginx, eine leistungsstarke, leichte Webserv...

Lösen Sie das Problem des MySQL Threads_running-Surge und der langsamen Abfrage

Inhaltsverzeichnis Hintergrund Problembeschreibun...

Detaillierte Erklärung der Winkelinhaltsprojektion

Inhaltsverzeichnis Einzelne Inhaltsprojektion Mul...

10 Fähigkeiten, die Frontend-Entwickler millionenschwer machen

Die Fähigkeiten, die Front-End-Entwickler beherrs...

Detailliertes Tutorial zur Installation von MySQL 8.0.13 (rpm) auf Centos7

yum oder rpm? Die Yum-Installationsmethode ist se...

Beispielcode einer in Vue3 gekapselten Lupenkomponente

Inhaltsverzeichnis Komponenteninfrastruktur Zweck...

Integrierte Objekte, Werttypen und Referenztypen in JavaScript-Objekten erklärt

Inhaltsverzeichnis Objekt Objektdefinition Iterie...

Vue-Komponente zur Realisierung einer Karussell-Animation

In diesem Artikelbeispiel wird der spezifische Co...

Einführung in Kubernetes (k8s)

Ich wollte schon immer Kubernetes lernen, weil es...

jQuery-Plugin zur Implementierung des Minesweeper-Spiels (3)

In diesem Artikel wird der dritte Artikel zur Ver...