Ich habe ein div mit einer festen höhe und overflow:hidden;
Ich möchte mit jQuery prüfen, ob das Div Elemente enthält, die über die feste Höhe des Div hinaus überlaufen. Wie kann ich das machen?
javascript
jquery
html
Justin Meltzer
quelle
quelle
Antworten:
Sie benötigen keine jQuery, um zu überprüfen, ob ein Überlauf auftritt oder nicht. Mit
element.offsetHeight
,element.offsetWidth
,element.scrollHeight
undelement.scrollWidth
Sie können feststellen , ob Ihr Element Gehalt größer als seine Größe:Siehe Beispiel in Aktion: Geige
Wenn Sie jedoch wissen möchten, welches Element in Ihrem Element sichtbar ist oder nicht, müssen Sie weitere Berechnungen durchführen. In Bezug auf die Sichtbarkeit gibt es drei Zustände für ein untergeordnetes Element:
Wenn Sie halb sichtbare Elemente zählen möchten, ist dies das Skript, das Sie benötigen:
Und wenn Sie nicht halb sichtbar zählen möchten, können Sie mit einem kleinen Unterschied rechnen.
quelle
<p>
ist ein Element auf Blockebene und nimmt eine Breite von 100% an. Wenn Sie dies mit einer Textmenge innerhalb des p versuchen möchten, machen Sie es einfachp{display:inline}
. Auf diese Weise bestimmt der Text im Inneren die Breite vonp
.Ich hatte die gleiche Frage wie das OP, und keine dieser Antworten entsprach meinen Bedürfnissen. Ich brauchte eine einfache Bedingung für eine einfache Notwendigkeit.
Hier ist meine Antwort:
Außerdem können Sie ändern ,
scrollWidth
indem anscrollHeight
wenn Sie den beiden Fällen zu testen.quelle
Also habe ich die überlaufende JQuery-Bibliothek verwendet: https://github.com/kevinmarx/overflowing
Wenn Sie nach der Installation der Bibliothek die Klasse
overflowing
allen überlaufenden Elementen zuweisen möchten , führen Sie einfach Folgendes aus:Dies gibt dann die Klasse
overflowing
, wie in<div class="targetElement overflowing">
allen Elementen, die überlaufen. Sie können dies dann einem Ereignishandler (Klicken, Mouseover) oder einer anderen Funktion hinzufügen, die den obigen Code ausführt, damit er dynamisch aktualisiert wird.quelle
Teilweise basierend auf Mohsens Antwort (die hinzugefügte erste Bedingung deckt den Fall ab, in dem das Kind vor dem Elternteil versteckt ist):
Dann machen Sie einfach:
quelle
Eine Methode besteht darin, scrollTop gegen sich selbst zu prüfen. Geben Sie dem Inhalt einen Bildlaufwert, der größer als seine Größe ist, und überprüfen Sie dann, ob sein scrollTop 0 ist oder nicht (wenn er nicht 0 ist, hat er einen Überlauf.)
http://jsfiddle.net/ukvBf/
quelle
Im Klartext: Holen Sie sich das übergeordnete Element. Überprüfen Sie die Höhe und speichern Sie diesen Wert. Durchlaufen Sie dann alle untergeordneten Elemente und überprüfen Sie ihre individuellen Höhen.
Das ist schmutzig, aber Sie könnten die Grundidee bekommen: http://jsfiddle.net/VgDgz/
quelle
Hier ist eine reine jQuery-Lösung, aber sie ist ziemlich chaotisch:
quelle
Dies ist die jQuery-Lösung, die für mich funktioniert hat.
offsetWidth
usw. hat nicht funktioniert.Wenn dies nicht funktioniert, stellen Sie sicher, dass das übergeordnete Element die gewünschte Breite hat (persönlich musste ich es verwenden
parent().parent())
. Istposition
relativ zum übergeordnetenextra_width
Element . Ich habe es auch hinzugefügt, da meine Elemente ("Tags") Bilder enthalten, für die nur wenig Zeit erforderlich ist Laden, aber während des Funktionsaufrufs haben sie eine Breite von Null, was die Berechnung beeinträchtigt. Um dies zu umgehen, verwende ich den folgenden Aufrufcode:Hoffe das hilft.
quelle
Ich habe dies behoben, indem ich ein weiteres Div in das überlaufende Div eingefügt habe. Dann vergleichen Sie die Höhen der 2 Divs.
und die js
Das sieht einfacher aus ...
quelle