*nur* CSS-Erkennung von Textüberläufen in HTML?

Lesezeit: 2 Minuten

nur CSS Erkennung von Textuberlaufen in HTML
iJames

Ich habe Vorschläge zur Verwendung von JavaScript zum Erkennen und Behandeln von Text gesehen, der ein HTML-Element überläuft. Aber es ist 2013, also habe ich mich gefragt, ob die CSS-Spezifikation vielleicht eine Möglichkeit hat, Überläufe selbst zu erkennen.

Mit anderen Worten, wenn ich ein div mit fester Größe habe:

<div class="smart-warning" style="width:200px; height:20px; overflow:hidden">
This is my very long text that would overflow the box.
</div>

Ich hätte gerne einen Stil, der etwas bewirkt, wenn der Text überläuft, wie zum Beispiel:

<style>
.smart-warning {
  border:1px solid black
}
.smart-warning:overflowing {
  border:1px solid red
}
</style>

Es scheint, als wären wir ziemlich nahe daran, so etwas in CSS zu haben, aber über die Spezifikationen zu gießen ist nicht mein Spiel.

Wenn es nicht existiert, denken Sie, dass es nützlich wäre?

Danke!

  • Ich glaube nicht, dass es nur mit CSS möglich ist, aber ich könnte mich irren.

    – kennypu

    17. September ’13 um 7:55

  • Javascript-Beispiele: stackoverflow.com/questions/7668636/… (mit einer Geige), stackoverflow.com/questions/7138772/…, stackoverflow.com/questions/11773029/…

    – iJames

    18. Sept. ’13 um 10:09


  • Ich habe eine Geige erstellt, die ein saubereres Beispiel für die oben angegebene Geige (eigentlich jsbin) ist und die JavaScript-Implementierungen etwas detaillierter behandelt: jsbin.com/apEHAdI/5/edit?html,css,js,Ausgabe

    – iJames

    18. Sept. ’13 um 11:37 Uhr

Mir ist kein Teil der CSS-Spezifikation bekannt, wo dies möglich wäre. Selektoren Ebene 4 unterstützt viele neue Pseudoklassen (und einige nützliche zum Überprüfen von Zuständen von Eingabeelementen), aber keine davon ist tatsächlich in der Lage, Bedingungen zu überprüfen, z. B. wenn eine Box überläuft. Sie müssen dies weiterhin über Javascript tun.

Der Grund, warum dies mit CSS niemals möglich sein wird, liegt darin, dass dies zu Paradoxien führen würde.

Folgendes berücksichtigen:

.box {
    height: 100px;
}

.box:overflowing {
    height: 200px;
}

.content {
    height: 150px;
}

Wenn die Box nun überläuft, bekommt sie eine Höhe von 200px, was bedeutet, dass sie nicht mehr überläuft, was bedeutet, dass sie eine Höhe von 100px bekommt, was bedeutet, dass sie jetzt überläuft, …

Wenn Ihr div aus einer einzigen Zeile besteht, könnten Sie Folgendes hinzufügen:

    text-overflow: ellipsis;
    white-space: nowrap;

Diese Ellipse-Eigenschaft fügt “…” am Ende von allem hinzu, was in Ihre Breitenbeschränkungen passt (und fügt Ihren überlaufenden Divs einen visuellen Indikator hinzu.) Soweit ich weiß, funktioniert es jedoch nur in Kombination mit der nowrap-Eigenschaft.

  • Damit dies auch funktioniert, gibt es noch einige weitere Anforderungen, die hier angegeben sind: stackoverflow.com/questions/17779293/…

    – Ryan Naccarato

    8. März ’21 um 22:46

.

318360cookie-check*nur* CSS-Erkennung von Textüberläufen in HTML?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy