Lösung für unvollständige Textanzeige im El-Tree

Lösung für unvollständige Textanzeige im El-Tree

Bei der Verwendung der El-Tree-Komponente des Elements UI treten häufig die folgenden Probleme auf:

Beim Rendern des El-Trees ist die Länge des Textinhalts inkonsistent, was dazu führt, dass der gesamte zu lange Text nicht angezeigt werden kann.

Nach einigen Versuchen haben wir die folgenden drei Lösungen gefunden und Methode drei wird empfohlen.

Methode 1: Der einfachste Weg, eine horizontale Bildlaufleiste festzulegen

Wirkung:

Legen Sie den Stil für das Span-Tag des aktuellen Baumknotens fest.

Überlauf: automatisch;
// oder overflow-x: auto;

Frage:

Denn nur wenn der Überlauf in der innersten Spannebene festgelegt ist, kann die Anzeige des überschüssigen Teils effektiv gesteuert werden, was dazu führt, dass bei mehreren besonders langen Textteilen horizontale Bildlaufleisten angezeigt werden, was etwas hässlich ist. Selbst wenn Sie der oberen Etikettenebene einen Überlauf hinzufügen, ist es immer noch hässlich. Das Problem ist also nicht gelöst. Nächste

Methode 2 (neu): Fügen Sie eine Ziehleiste hinzu, um die Breite des äußeren Containers zu ändern

Wirkung:

Code:

Beachten Sie, dass die ID-Bindung der vier Teile ausreicht.

<el-container id="Abteilung">
    <el-aside width="220px" id="drag-dept-left">
    </el-beiseite>
    <div id="dragBar-dept" class="dragBar"></div>
    <el-main id="ziehen-dept-rechts" Klasse="ziehen-rechts">
    </el-main>
</el-container>

CSS dient nur als Referenz. Ändern Sie die Breitensteuerung selbst.

.dragBar {
  Breite: 3px;
  Höhe: 100%;
  Hintergrund: #01e4fd;
  Cursor: elektronische Größenänderung;
}
.nach rechts ziehen {
  Polsterung rechts: 0px;
  Breite: berechnet (100 % – 213 Pixel);
}

js-Aufruf

montiert () {
    // Den Zoom-Schieberegler mit der entsprechenden Methodeneingabe (Schieberegler-ID, linke ID, rechte ID, äußere ID) einbinden
    dies.$_comFun.bindResize('dragBar-dept', 'drag-dept-links', 'drag-dept-rechts', 'dept')
  },

js globale Variablen

exportiere standardmäßig neuen Vuex.Store({
    Zustand: {
      // Ziehen Sie die Bildlaufleiste, um die Breite des inneren Divs zu ändern dragBar: false
    },
    Mutationen:
    },
    Aktionen: {
    },
    Module:
    }
})

öffentliche js-Methoden

Store aus „../index“ importieren

// Ziehen Sie den Maßstab, um die Breite des linken Divs zu ändern. Methode bindResize (barID, leftID, rightID, docID) {
    // Festlegen, ob die Flagge verschoben werden soll let removeFlag = false
    // Holen Sie sich das skalierte Div-Objekt auf der linken Seite let bar = document.getElementById(barID)
    let dragLeft = document.getElementById(leftID).style
    let dragRight = document.getElementById(rightID).style
    let doc = Dokument.getElementById(docID)
    let x = 0 // X- und Y-Achsenkoordinaten der Maus // Mount-Mausereignisse bar.addEventListener('mousedown', moveDownMouse, false)
    // Beachten Sie, dass die Bewegungs- und Mausfokusverlustereignisse an das DOM gebunden sein müssen. Wenn sie nur an die Leiste gebunden sind, sind sie nur wirksam, wenn sie sich bewegen/den Fokus auf der Leiste verlieren.doc.addEventListener('mousemove', mouseMove, false)
    doc.addEventListener('Maus hoch', Maus hoch, false)

    Funktion moveDownMouse (e) {
      entfernenFlag = wahr
      // Berechnen Sie die Koordinaten der aktuellen Maus und des Objekts nach dem Drücken des Elements x = e.clientX – bar.offsetWidth – dragLeft.width.replace('px', '')
      // Fokus erfassen, wenn „setCapture“ unterstützt wird // Ereignis festlegen // Ereignis binden, wenn (bar.setCapture) {
        bar.setCapture()
        bar.onmousemove = Funktion (ev) {
          Mausbewegung(ev || Ereignis)
        }
        bar.onmouseup = Maus hoch
      } anders {
        // bar.addEventListener('Mausbewegung', Mausbewegung, false)
        // bar.addEventListener('mouseup', Maus hoch, false)
      }
      // Verhindern, dass das Standardereignis eintritt e.preventDefault()
      store.state.dragBar = falsch
    }
    //Bewegungsereignisfunktion mouseMove (e) {
      wenn (entferneFlag) {
        // Das Universum ist im Betrieb unbesiegbar. let width = e.clientX - x
        wenn (Breite < 200) {
          dragLeft.width = "200px"
        } sonst wenn (Breite > 400) {
          dragLeft.width = "400px"
        } anders {
          dragLeft.width = Breite + 'px'
        }
        // Wenn die rechte Breite nicht berechnet wird, wird die Drag-Leiste gestaucht dragRight.width = 'calc(100% - ' + dragLeft.width + ')'
      }
    }
    //Stopp-Ereignisfunktion mouseUp () {
      entfernenFlag = false
      // Wenn ReleaseCapture unterstützt wird // Fokus freigeben // Ereignis entfernen // Ereignis deinstallieren if (bar.releaseCapture) {
        bar.releaseCapture()
        bar.onmousemove = bar.onmouseup = null
      } anders {
        // bar.removeEventListener('Mausbewegung', Mausbewegung, false)
        // bar.removeEventListener('mouseup', mouseUp, false)
      }
      store.state.dragBar = wahr
    }
}

Methode 2 (alt): Fügen Sie eine Ziehleiste hinzu, um die Breite des äußeren Containers zu ändern

Wirkung:

Einen Ziehbalken hinzufügen

<div id="DragBar"></div>

Nachdem die aktuelle Komponente geladen wurde, binden Sie das Ereignis an die Drag-Leiste

  montiert () {
    // Zoom-Dragbar mit der entsprechenden Methode einbinden (Dragbar-Objekt, ID des linken Div)
    this.bindResize(document.getElementById('dragBar'), 'Menü')
  },
  Methoden: {
   // Ziehen Sie den Maßstab, um die Breite des linken Divs zu ändern. Methode bindResize (bar, menu) {
     /* eslint-deaktivieren */
     // Holen Sie sich das skalierte Div-Objekt auf der linken Seite let els = document.getElementById(menu).style
     let x = 0 // X- und Y-Koordinaten der Maus jQuery(bar).mousedown(function (e) {
       // Nach dem Drücken des Elements die Koordinaten der aktuellen Maus und des Objekts berechnen x = e.clientX - bar.offsetWidth - jQuery('#' + menu).width()
       // Fokus erfassen, wenn „setCapture“ unterstützt wird // Ereignis festlegen // Ereignis binden, wenn (bar.setCapture) {
         bar.setCapture()
         bar.onmousemove = Funktion (ev) {
           Mausbewegung(ev || Ereignis)
         }
         bar.onmouseup = Maus hoch
       } anders {
         jQuery(Dokument).binden('Mausbewegung', Mausbewegung).binden('Maushoch', Maushoch)
       }
       // Verhindern, dass das Standardereignis eintritt e.preventDefault()
     })
     //Bewegungsereignisfunktion mouseMove (e) {
       // Das Universum befindet sich in einer superunbesiegbaren Berechnung els.width = e.clientX - x + 'px'
     }
     //Stopp-Ereignisfunktion mouseUp () {
       // Wenn ReleaseCapture unterstützt wird // Fokus freigeben // Ereignis entfernen // Ereignis deinstallieren if (bar.releaseCapture) {
         bar.releaseCapture()
         bar.onmousemove = bar.onmouseup = null
       } anders {
         jQuery(Dokument).aufheben('Mausbewegung', Mausbewegung).aufheben('Maushoch', Maushoch)
       }
     }
     /* eslint-aktivieren */
   }
  }

Frage:

Die Methode ist gut, aber etwas umständlich. Was soll ich tun, wenn ich nur eine einfache Anzeige möchte und sie überhaupt nicht herumschleppen möchte? Nächste

Methode 3: Verwenden Sie ..., um anzugeben, dass der vollständige Name angezeigt wird, wenn die Maus darüber bewegt wird

Wirkung:

Verfahren:

Dies ist die erste Lösung, die mir bei einem Problem in den Sinn kommt, aber ich musste viele Umwege machen, bevor ich auf die richtige Spur kam.

Da es im offiziellen El-Tree-Dokument des Element-UI keine Anleitung zum Einfügen eines Titel-Tags in einen Knoten gibt, habe ich den Quellcode geöffnet und ihn gezwungen, „title="node.name"" in den Span-Tag des entsprechenden Knotens zu schreiben, aber das hat nichts genützt.

Bis ich den benutzerdefinierten Knoteninhalt sah, konnte ich, obwohl das offizielle Beispiel zum Einfügen und Löschen von Knoten verwendet wurde, das Klickereignis in ein Hover-Ereignis umwandeln, um den vollständigen Inhalt des Knotentextes anzuzeigen.

Wenn ich mich dann dafür entscheide, den eingeschränkten Steckplatz einzufügen, stelle ich Folgendes fest:

Dieses Problem ist endlich gelöst.

Code:

Verwenden Sie die el-tree-Komponente wie folgt:

<el-tree ref="Baum" :data="treeMenus" :props="multiProps" :show-checkbox="true" :node-key="nodeId">
 <span class="span-ellipsis" slot-scope="{ Knoten, Daten }">
  <span :title="node.label">{{ node.label }}</span>
 </span>
</el-Baum>

Fügen Sie dem Span-Tag Stile hinzu und verwenden Sie ..., um anzugeben, dass der Text nicht vollständig angezeigt wird:

.span-ellipsis {
  Breite: 100 %;
  Überlauf: versteckt;
  Leerzeichen: Nowrap;
  Textüberlauf: Auslassungspunkte;
}

Zusätzliche Hinweise:

Wenn die Stileinstellung „.span-ellipsis“ ungültig ist, müssen Sie möglicherweise „display: block“ hinzufügen. Das heißt:

.span-ellipsis {
  Breite: 100 %;
  Überlauf: versteckt;
  Leerzeichen: Nowrap;
  Textüberlauf: Auslassungspunkte;
  Anzeige: Block;
}

Da ich die El-Tree-Komponente des Elements UI verwende, ist der äußere Stil von Span standardmäßig auf „display: flex“ eingestellt. Daher besteht keine Notwendigkeit, die Anzeigeeigenschaft von Span festzulegen.

Dies ist das Ende dieses Artikels über die Lösung des Problems der unvollständigen Anzeige von El-Tree-Text. Weitere verwandte Inhalte zur unvollständigen Anzeige von El-Tree-Text finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Die Elementbaumsteuerung integriert ein Dropdown-Menü mit Symbolen (Baum+Dropdown+Eingabe)
  • Im Vorstellungsgespräch müssen Fragen zur Set-Implementierungsklasse gestellt werden: TreeSet
  • C++-Implementierung von KDTree mit vollständigem Code
  • JDK-Sammlung Quellcode-Analyse TreeMap (Teil 2)
  • JDK-Sammlung Quellcode-Analyse TreeMap (I)
  • ConcurrentHashMap analysieren: Rot-Schwarz-Baum-Proxy-Klasse (TreeBin)
  • Über das Wertübertragungsproblem zwischen Antd-Baum und übergeordneten und untergeordneten Komponenten (Reaktionszusammenfassung)
  • C# TreeNode-Fallstudie

<<:  So gehen Sie mit dem Problem um, dass die Datei gelöscht wird, der Speicherplatz in Linux jedoch nicht freigegeben wird

>>:  Grafisches Tutorial zur Installation und Konfiguration von mysql 8.0.18.zip (Windows 64 Bit)

Artikel empfehlen

Detailliertes Tutorial zur Installation von Ubuntu 19.10 auf Raspberry Pi 4

Da einige Abhängigkeiten von OpenCV beim Ausführe...

Element-Beispielcode zum Implementieren dynamischer Tabellen

Inhaltsverzeichnis 【Code-Hintergrund】 【Code-Imple...

So erstellen Sie Benutzer und verwalten Berechtigungen in MySQL

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

Detailliertes Installationstutorial für Zabbix 4.04 (basierend auf CentOS 7.6)

1. Vorbereitung vor der Installation: 1.1 JDK ins...

So richten Sie die passwortfreie SSH-Anmeldung beim Linux-Server ein

Bei jeder Anmeldung am Testserver ist grundsätzli...

Natives JS zum Erzielen digitaler Tisch-Spezialeffekte

Dieser Artikel beschreibt einen Digitaluhreffekt,...

Detaillierte Verwendung von React.Children

Inhaltsverzeichnis 1. Reagieren.Children.map 2. R...

Detaillierte Erläuterung des virtuellen DOM in der Vue-Quellcodeanalyse

Warum brauchen wir virtuellen Dom? Virtual DOM wu...

So implementieren Sie das N-Grid-Layout in CSS

Häufige Anwendungsszenarien Die Schnittstellen ak...

Kurze Analyse der verschiedenen Versionen des mysql.data.dll-Treibers

Hier ist der MySQL-Treiber mysql.data.dll Beachte...

Detaillierte Erläuterung der kombinierten MySQL-Abfrage

Verwenden von UNION Die meisten SQL-Abfragen best...

So zeigen Sie Bilder im TIF-Format im Browser an

Der Browser zeigt Bilder im TIF-Format an Code kop...

Pycharm2017 realisiert die Verbindung zwischen Python3.6 und MySQL

In diesem Artikel erfahren Sie, wie Sie Python3.6...