Ich habe ein div, das ein Bild und etwas Text enthält (das Bild hat die variable Größe und der Text die variable Länge).
Gibt es eine Möglichkeit, die Höhe zu berechnen, die erforderlich ist, um den gesamten div-Inhalt anzupassen, da die genaue Breite vordefiniert ist?
UPD erhält bei Verwendung das gleiche falsche Ergebnis $(document).ready()
document.addEventListener("DOMContentLoaded", function ()
{
var div = document.getElementById("Content");
var res = document.getElementById("Result");
res.innerHTML = div.offsetHeight; // incorrect - returns 252 while the real height is 360 (Firefox, Chrome)
});
div
{
width: 400px;
}
img
{
float: left;
margin: 0.5em;
}
<div id="Content">
<img src="https://picsum.photos/id/82/200/150" />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Orci phasellus egestas tellus rutrum. Tempor nec feugiat nisl pretium fusce. Cras pulvinar mattis nunc sed blandit libero volutpat sed cras. Purus sit amet luctus venenatis lectus magna fringilla urna. Ut tristique et egestas quis. Mauris cursus mattis molestie a iaculis at erat pellentesque adipiscing. Iaculis eu non diam phasellus vestibulum lorem sed risus ultricies. Semper quis lectus nulla at. Augue interdum velit euismod in. Amet aliquam id diam maecenas ultricies mi eget. Scelerisque viverra mauris in aliquam sem fringilla ut morbi. Et egestas quis ipsum suspendisse. Et malesuada fames ac turpis. Fermentum iaculis eu non diam phasellus vestibulum lorem sed.
</div>
<br/>
<span id="Result"></span>
javascript
css
user626528
quelle
quelle
onload
dann die Höhe innerhalb des Rückrufs ermittelnAntworten:
Sie müssen
window.onload
stattdessen verwenden.In Ihrem Fall müssen Sie auf das Bild und nicht nur auf das DOM warten.
quelle
Um die Höhe des Div und des Bildes genau zu bestimmen. Dies liegt daran, dass das Bild wahrscheinlich zuletzt vollständig geladen wird. Wenn die Höhe des Containers vor dem Laden des Bilds überprüft wird, wird die Höhe ohne Berücksichtigung der Bildhöhe zurückgegeben.
Dem Bild sollte ein Listener hinzugefügt werden, der die Höhe nach dem Laden des Bildes überprüft.
Da das Styling einfach ist
offsetHeight
undclientHeight
funktionieren sollte, aber das gesamte Element (mit Rand und Rand) einbeziehen soll, verwenden Sie esscrollHeight
wie in Element.scrollHeight in MDN-Webdokumenten beschriebenDer resultierende Code:
Das ganze Beispiel befindet sich hier in einer CodeSnadbox:
quelle
Ich bin nicht sicher, ob ich Ihre Frage vollständig verstehe, aber Sie können Javascript verwenden, um die Höhe eines Div zu berechnen.
quelle
document.getElementsByTagName('div').getBoundingClientRect().height
. Probieren Sie es aus und lassen Sie mich wissen, ob es funktioniert.Ich weiß, dass Sie darum bitten, die Größe des Div zu ändern, sobald das Bild geladen ist, um das Div größer zu machen, aber nur als Nebenkommentar, wissen Sie / haben Sie versucht, Hintergrundgröße: enthält?
Wie von MDN angegeben:
Der Contain-Wert gibt an, dass das Hintergrundbild unabhängig von der Größe des enthaltenen Felds so skaliert werden soll, dass jede Seite so groß wie möglich ist und die Länge der entsprechenden Seite des Containers nicht überschreitet.
Der Deckungswert:
Der Deckungswert gibt an, dass das Hintergrundbild so klein wie möglich sein soll, während sichergestellt wird, dass beide Abmessungen größer oder gleich der entsprechenden Größe des Containers sind. Versuchen Sie, die Größe des folgenden Beispiels zu ändern, um dies in Aktion zu sehen.
In Kombination mit der Hintergrundposition denke ich, dass es wirklich nützlich sein kann
quelle
Wenn Sie jquery verwenden möchten, ist dies der Weg
quelle
Nicht dynamisch, da Sie die Breite eingestellt haben, ist es nicht schwierig, sie zu berechnen, da sie sich in verschiedenen Bildschirmen nicht ändert. Der einzige Weg ist jedoch, DEV TOOLS MANUELL ZU VERWENDEN.
Wenn sich das Bild und die Schriftart ändern, können Sie ein Javascript-Skript verwenden, das nach dem Onlaod anzeigt, welche Höhe das Div hat. (wenn Sie diesen Kommentar unten benötigen)
quelle
In js können Sie die Höhe jedes Elements ermitteln. Die Breite wird zur Berechnung der Höhe überhaupt nicht benötigt.
Da div ein generisches Tag ist, fügen Sie eine ID hinzu, um sicherzustellen, dass das richtige Tag zur Berechnung der Höhe verwendet wird
quelle
Sie können die Eigenschaft .scrollHeight verwenden .
quelle
Das DOMContentLoaded- Ereignis wird ausgelöst, wenn der Browser den HTML- Code vollständig lädt und der DOM-Baum erstellt wird, externe Ressourcen wie Bilder und Stylesheets jedoch noch nicht geladen sind. Während das window.onload- Ereignis ausgelöst wird, wenn die gesamte Seite einschließlich Stilen, Bildern und anderen Ressourcen geladen wird.
Und Sie haben die Höhe 252 anstatt 360, weil die Höhe des Div ohne Ihr Bild 252 beträgt. Als Referenz können Sie das folgende Snippet ausführen.
quelle
100% arbeiten! Verwenden Sie die Window.onload- Funktion anstelle von DOMContentLoaded
Wird Ihr Ergebnis geben!
quelle
Sie sollten die Methode
element.getBoundingClientRect()
nach dem Laden überprüfen . Es wird eine Reihe von Eigenschaften wie Breite und Höhe zurückgegeben.quelle