Vorwort Dies ist eine alte Forderung, aber es gibt immer noch viele Leute, die online nach Lösungen suchen, insbesondere nach Lösungen mit hohen Platzierungen in den Suchergebnissen, die nur Lösungen mit Wenn Sie diesen Artikel sehen, bedeutet das möglicherweise, dass Sie von so vielen 08/15-Artikeln hierher gekommen sind und nach einer besseren Lösung suchen. Dann herzlichen Glückwunsch, besser geht es nicht, nur passender. Voraussetzung ist natürlich, dass mein Artikel genügend Traffic hat und nach oben gepusht werden kann, damit du die Chance hast, ihn zu sehen. Hier sind drei Methoden zum Abschneiden von mehrzeiligem Text. Die erste ist natürlich Verwenden von -webkit-line-clamp Wenden Sie die folgenden Stile auf den mehrzeiligen Textcontainer an div { Anzeige: -webkit-box; -webkit-box-orient: vertikal; Überlauf: versteckt; -Webkit-Leitungsklemme: 2; } Mit Ausnahme von Und Vorteil:
Mangel: Wie Sie am Präfix des Attributs erkennen können, wird dies von Browsern mit Anwendungsszenarien Wenn Sie nur WebKit-basierte Browser oder Mobilgeräte ansprechen möchten (die meisten Mobilbrowser basieren auf dem WebKit-basierten Browserkernel), ist diese Lösung die beste. Verwenden der absoluten Positionierung Diese Lösung ist eigentlich sehr einfach zu verstehen. Zuerst reservieren wir auf der rechten Seite eines Containers, der Inhalt enthält, Platz für eine Ellipse und verwenden Verwenden Sie die absolute Positionierung, um die Auslassungspunkte in der unteren rechten Ecke des reservierten Bereichs zu positionieren. html <div class="wrap">Inhalt</div> CSS .wrap3 { Position: relativ; Polsterung rechts: 1em; /*max-height ist ein Vielfaches der Zeilenhöhe, abhängig davon, wie viele Zeilen Sie anzeigen möchten*/ maximale Höhe: 3,6em; Zeilenhöhe: 1,2em; Textausrichtung: Blocksatz; Überlauf: versteckt; } .wrap3:vor { Position: absolut; rechts: 0; unten: 0; Inhalt: '...'; } Wirkung (mehrere Inhalte): Auf diese Weise bleiben die Auslassungspunkte immer vorhanden. Um dieses Problem zu lösen, verwenden wir ein Quadrat mit der gleichen Farbe wie der Hintergrund, um die Auslassungspunkte abzudecken. Der entscheidende Punkt ist: Woher wissen wir, wann wir es abdecken müssen und wann nicht? Idee: Das Quadrat, das zum Blockieren der Auslassungspunkte verwendet wird, ist ebenfalls absolut positioniert, nach rechts eingestellt, Die endgültige Lösung lautet also: html <div class="wrap">Inhalt</div> CSS .wickeln { Position: relativ; /*Zeilenhöhe und Höhe müssen aufeinander abgestimmt sein. Die Anzahl der wegzulassenden Zeilen ist ein Vielfaches von Zeilenhöhe*/ Zeilenhöhe: 1,2em; maximale Höhe: 3,6em; /*Diese Eigenschaft wird nach Bedarf bestimmt. Da padding-right gesetzt ist, wird mehr Platz freigegeben. Dieser Wert ist im Allgemeinen der negative Wert von padding-right*/ /*Rand links: -1em;*/ /*Dieser Wert sollte als 1em fest codiert werden, da die Auslassungspunkte wahrscheinlich 1em Platz beanspruchen*/ Polsterung rechts: 1em; Textausrichtung: Blocksatz; Überlauf: versteckt; } .wrap:vor { Position: absolut; rechts: 0; unten: 0; Inhalt: '...'; } .wrap:nach { Position: absolut; rechts: 0; /*Stellen Sie Breite und Höhe einfach auf 1em ein, da die Auslassungspunkte etwa 1em Platz beanspruchen, der zum Abdecken der Auslassungspunkte verwendet wird und im Grunde dem rechten Abstand von „wrap“ entspricht*/ Breite: 1em; /*Den tatsächlichen Wert der Zeilenumbruchhöhe beibehalten*/ Höhe: 1,2em; Inhalt: ''; /*Es sollte mit der Hintergrundfarbe übereinstimmen, damit die Auslassungspunkte ohne Auffälligkeiten abgedeckt werden können*/ Hintergrundfarbe: #fff; } Wirkung: Vorteil
Mangel
Verwenden des Float-Layouts Diese Lösung ist für diejenigen, die nicht über solide Grundkenntnisse verfügen, möglicherweise nicht leicht zu verstehen. Wenn Sie nur eine Lösung finden und das Prinzip nicht kennen möchten, können Sie direkt zu Bevor wir über diese Lösung sprechen, müssen wir zunächst folgendes Phänomen verstehen: Es gibt einen solchen HTML-Abschnitt <div Klasse="wrap"> <div Klasse="left">Links schweben</div> <div class="right1">Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1Float rechts 1</div> <div class="right2">Rechts schweben 2</div> </div> Diesen Stil anwenden .wickeln { Höhe: 100px; } .links { schweben: links; Breite: 60px; Höhe: 100%; Hintergrund: rosa; } .rechts1 { schweben: rechts; /*Verbleibende Breite des Wraps außer links belegen*/ Breite: berechnet (100 % – 60 Pixel); Hintergrund: #95d9f8; } .rechts2 { schweben: rechts; Hintergrund: gelb; } Normalerweise wird es so angezeigt, wie es sich jeder im Allgemeinen vorstellen kann: Die Bedingungen für das Auftreten dieses normalen Phänomens sind:
Okay, ich denke, jeder versteht diese Situation. Wenn wir dann den Inhalt von Right Float 2 steckt in der unteren linken Ecke fest. Möchten Sie mich fragen, warum das passiert ist? Ähm … es scheint, dass Ihre Grundkenntnisse in Float nicht solide sind. Ich schlage vor, dass Sie Ihre Grundkenntnisse festigen. Eigentlich kann ich es nicht erklären. Ich weiß nur, dass dies eine normale Float-Leistung ist. Die Bedingungen für das Auftreten dieses Phänomens sind:
Von der Umsetzung von Wissen zur Bedarfsrealisierung Nachdem wir die beiden oben genannten Szenarien verstanden haben, wie sollten wir dieses Wissen nutzen, um die entsprechenden Bedürfnisse zu erfüllen? Angenommen, der Textinhalt des rechten Floats 1 ist der Inhalt, den wir für mehrere Zeilen weglassen möchten, und der Inhalt des rechten Floats 2 sind die Auslassungspunkte (...). Auf diese Weise ist die Auslassungsstelle bei wenig Inhalt der oben genannte erste Fall und bei viel Inhalt der zweite Fall. Ist diese dynamische Änderung vergleichbar mit der Änderung der Forderung „nicht weglassen, wenn der Text klein ist, weglassen, wenn der Text groß ist“? Auf dieser Grundlage müssen wir das folgende Problem lösen: Im ersten Fall wird der rechte Float 2 ausgeblendet, und im zweiten Fall wird der rechte Float 2 in der unteren rechten Ecke von Um das obige Problem zu lösen, verwenden Sie einfach Okay, jetzt liegt der Schwerpunkt der Lösung darauf, wie das Problem genau lokalisiert werden kann (nächster Abschnitt). Bevor wir uns mit dem Positionierungsproblem befassen, wandeln wir zunächst die aktuelle Situation in einen tatsächlichen Bedarfscode um: <!--Verwenden Sie Pseudoelemente, um die tatsächlichen Tags für den linken und rechten Float 2 zu ersetzen --> <div Klasse="wrap"> <div class="text">Rechts schweben 1</div> </div> .wickeln { Höhe: 100px; /*Zeilenhöhe wird verwendet, um die maximale Anzahl an Textzeilen zu steuern, die angezeigt werden können*/ Zeilenhöhe: 20px; Überlauf: versteckt; } .wrap:vor { schweben: links; /* Muss größer oder gleich der Breite des nachfolgenden Elements sein*/ Breite: 1,5em; Höhe: 100%; Inhalt: ''; } .text { schweben: rechts; /*Verwenden Sie einen negativen linken Rand, um den durch „vorher“ entstandenen Leerraum zu vermeiden*/ /*Denn bei tatsächlicher Nachfrage ist es unmöglich, dass die linke Seite Ihres übergeordneten Containers leer ist*/ Rand links: -1,5em; /*Da ein negativer marginLeft-Wert verwendet wird, kann die Breite des Textcontainers 100 % der Breite des übergeordneten Containers einnehmen*/ Breite: 100 %; } .wrap:nach { schweben: rechts; /*Im Allgemeinen sind drei Punkte etwa 1em breit. Die Verwendung von em als Einheit kann die Schriftgröße adaptiv machen*/ Breite: 1em; Inhalt: '...'; } Falls Sie sich jetzt fragen, warum So finden Sie Die Lösung des Positionierungsproblems basiert auf dem Code im vorherigen Abschnitt. Die derzeit auftretenden Probleme sind:
Lassen Sie uns zuerst das zweite Problem lösen. Idee: Verschieben Sie dieses Wenn Sie Wenn Sie die Breite von Wenn es in der unteren rechten Ecke erscheinen soll, muss die Anfangsposition der Auslassungspunkte auf der linken Seite von Nun stellt sich die Frage, wie man dafür sorgt, dass .wrap:nach { schweben: rechts; /*Da der Rand unten festgelegt ist, besteht hier keine Anforderung für den Breitenwert*/ Breite: 1em; Inhalt: '...'; /*Diese beiden Eigenschaften werden neben der linken Seite von .wrap gesetzt*/ /*Dieser Wert sollte der gleiche wie seine eigene Breite sein, nehmen Sie einen negativen Wert*/ Rand links: -1em; /*Dieser Wert sollte derselbe sein wie die vorherige Breite*/ Polsterung rechts: 1,5em; /*Hier befindet sich die Auslassungszeichen-Position*/ Position: relativ; links: 100 %; /*Gleich der tatsächlichen Zeilenhöhe des übergeordneten Elementumbruchs, negativer Wert*/ oben: -20px; } Was das Einstellen von Rand- und Füllwerten betrifft, wäre es am besten, wenn Sie es verstehen könnten. Wenn nicht, werde ich versuchen, es so gut wie möglich zu erklären, aber es ist wirklich schwer zu erklären. Erstens, wenn Rosa schwebt nach links, Blau und Rot nach rechts. Wenn die Breite der roten Farbe weiter zunimmt, bis auf den verbleibenden Platz außer der rosa Farbe, wird die blaue Farbe bis zum Zeilenumbruch zusammengedrückt und schwebt nach rechts, da in einer Zeile nicht genügend Platz ist. Wenn Sie jedoch den blauen linken Rand auf einen negativen Wert seiner eigenen Breite setzen, ist in einer Zeile immer noch Platz dafür, und es wird wie folgt Gemäß dem obigen Prinzip kehrt :after nach dem Festlegen von Okay, ich bin mit meiner Erklärung fertig. Ob du sie verstehst oder nicht, hängt von deinem Glück ab, haha. Es ist erwähnenswert, dass der Kommentar zur Breite im obigen Code lautet: „Da der Rand unten festgelegt ist, gibt es hier keine Anforderung für den Breitenwert.“ Früher musste er kleiner oder gleich der Zusammenfassung Bisher wurden alle Probleme gelöst. Für alle oben diskutierten Probleme ist der folgende Code zusammengefasst (spezifische Optimierungen werden in den Kommentaren erläutert): CSS-Stile .wickeln { /*Die Höhe muss eingestellt werden*/ Höhe: 100px; /*Wird verwendet, um die Anzahl der anzuzeigenden Zeilen vor dem Weglassen festzulegen. Der Wert wird im Allgemeinen durch Division des Zeilenhöhenwerts durch die Anzahl der Zeilen ermittelt, die Anzahl der Zeilen wird jedoch durch die Schriftgröße begrenzt*/ /*Die Schriftart ist zu groß und es wird hässlich aussehen, wenn Sie sie auf die Anzeige vieler Zeilen einstellen, da diese alle zusammengequetscht werden. Der tatsächliche Wert hängt also von den jeweiligen Anforderungen und Vorgehensweisen ab*/ Zeilenhöhe: 25px; /*Das Hinzufügen dieses Attributs verbessert den Anzeigeeffekt und hat keine großen Auswirkungen, auch wenn einige Browser es nicht unterstützen*/ Textausrichtung: Blocksatz; Überlauf: versteckt; } .wrap:vor { schweben: links; /*Dieser Wert kann beliebig eingestellt werden, unabhängig von der Einheit oder anderen Faktoren*/ Breite: 1em; Höhe: 100%; Inhalt: ''; } .wrap:nach { schweben: rechts; /*Die Größe ist beliebig, am besten wird sie in em-Einheiten eingestellt, die sich an die Schriftgröße anpassen können*/ /*Wenn Sie den folgenden Farbverlaufseffekt verwenden möchten, sollte dieser Wert für einen besseren Effekt größer sein als der vorherige Breitenwert*/ /*Je größer der Wert, desto deutlicher ist der Gradienteneffekt und desto größer ist der betroffene Bereich. */ Breite: 2,5em; /*Der tatsächliche px-Wert der Zeilenhöhe entspricht dem Umbruch des übergeordneten Elements*/ Höhe: 25px; /*Dieser Wert sollte der gleiche wie seine eigene Breite sein, nehmen Sie einen negativen Wert*/ Rand links: -2,5em; /*Dieser Wert sollte derselbe sein wie die vorherige Breite*/ Polsterung rechts: 1em; Inhalt: '...'; Textausrichtung: rechts; /*Hier beginnen wir, das Float-Layout zum Positionieren und Verschieben zu verwenden*/ Position: relativ; /*Gleich der tatsächlichen Zeilenhöhe des übergeordneten Elementumbruchs, negativer Wert*/ oben: -25px; links: 100 %; /*Der Farbverlaufseffekt ist so eingestellt, dass die Auslassungspunkte und der Inhalt natürlicher und nicht so abrupt miteinander verbunden werden. Achten Sie darauf, dass die Farbe mit dem Hintergrund übereinstimmt, auf dem sich der Text befindet (ersetzen Sie Weiß durch die Hintergrundfarbe)*/ Hintergrund: #fff; Hintergrund: -webkit-gradient(linear, links oben, rechts oben, von(rgba(255, 255, 255, 0)), bis(weiß), Farbstopp(50%, weiß)); Hintergrund: -moz-linear-gradient (nach rechts, rgba (255, 255, 255, 0), weiß 50 %, weiß); Hintergrund: -o-linear-gradient (nach rechts, rgba (255, 255, 255, 0), weiß 50 %, weiß); Hintergrund: -ms-linear-gradient (nach rechts, rgba (255, 255, 255, 0), weiß 50 %, weiß); Hintergrund: linearer Farbverlauf (nach rechts, rgba (255, 255, 255, 0), weiß 50 %, weiß); } .wrap .text { schweben: rechts; /*Dieser Wert muss dem Breitenwert von wrap:before entsprechen*/ Rand links: -1em; Breite: 100 %; } html-Datei: <div Klasse="wrap"> <span class="text"> Beispiel 2: Verteilen Sie die Lösung für das Problem der Entwicklung und des Austauschs von Mobiltelefonen </div> Wirkung: Vorteil
Mangel
Zusammenfassen Tatsächlich gibt es keine Garantie dafür, welcher Plan besser ist, sondern nur, ob er für Sie geeignet ist. Wenn Sie aufgefordert werden, Obst zu schälen, nehmen Sie einfach ein Obstmesser, es ist nicht nötig, ein großes Messer zu verwenden. Es stehen Ihnen also immer drei Optionen zur Verfügung, die Ihren Anforderungen entsprechen. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. |
<<: Die Popularität chinesischer Domainnamen in China hat eine neue Höhepunktrunde eingeleitet
>>: Der gesamte Prozess der Aktualisierung eines Angular-Einzelprojekts auf mehrere Projekte
Inhaltsverzeichnis Schreiben Sie vor Geschäftscod...
Frage Wie greife ich in Docker auf die lokale Dat...
Inhaltsverzeichnis 8. Kreisförmiger Fortschritts-...
Die Grafikkarte meines Computers ist eine Nvidia-...
Inhaltsverzeichnis Einführung Architektur Vorteil...
Inhaltsverzeichnis 01 Häufige Fehler 1 02 Häufige...
In unserer täglichen Entwicklungsarbeit sind Text...
Wenn wir den Inhalt einer archivierten oder kompr...
Inhaltsverzeichnis 1. Vier Konzepte 1. JavaScript...
Inhaltsverzeichnis 1.union: Sie können Abfrageerg...
Verwenden Sie Vue, um einfach einen Click-Flip-Ef...
Lassen Sie uns kurz die Konfiguration von Server ...
[Verwendung und Funktion des MySQL-Cursors] Beisp...
Umweltanforderungen: IP Hostname 192.168.1.1 Knot...
1. Übersicht über SQLException Wenn bei der Verwe...