cloneNode zur Ermittlung von offsetHeight - legitim?
Siri
- javascript
Hallo,
ich habe folgendes Konstrukt:
<ul>
<li id="l1">Bla</li>
<li id="l2">
<beliebigerinhalt/>
</li>
<li id="l3">Blubb</li>
</ul>
<li id="l2"> ist zunächst mit display: none; ausgeblendet und soll per Javascript aufgezoomt werden und zwar auf die Höhe seines <beliebigerinhalt/>. Dazu muss ich ja wissen, wie hoch wäre den <li id="l2"><beliebigerinhalt/></li>. Durch display: none; ergibt offsetHeight aber 0.
Jetzt meine Idee: <li id="l2"> clonen, display auf block setzen, und offsetHeight abfragen. Ist das legitim? Oder kann ich die Höhe von <li id="l2"> einfacher ermitteln?
Viele Grüße
Siri
Meine Herren,
Jetzt meine Idee: <li id="l2"> clonen, display auf block setzen, und offsetHeight abfragen. Ist das legitim?
offsetHeight gibt ja die Höhe in Relation zum Elternelement zurück, ein geklonter Knoten hat aber zunächst mal kein Elternelement.
Bist du dir übrigens sicher, dass du die display-Eigenschaft auf "block" und nicht "list-item" setzen möchtest?
Oder kann ich die Höhe von <li id="l2"> einfacher ermitteln?
Du kannst das Element getrost einblenden, die Höhe abfragen und anschließen sofort wieder ausblenden. Weil Javascript das UI blockiert, dürfte es auch nicht zu einem Aufblitzen des Elements kommen.
Hallo,
Jetzt meine Idee: <li id="l2"> clonen, display auf block setzen, und offsetHeight abfragen. Ist das legitim?
offsetHeight gibt ja die Höhe in Relation zum Elternelement zurück, ein geklonter Knoten hat aber zunächst mal kein Elternelement.
Ich hab es vorübergehend in einen Bereich mit der Höhe 0 eingehängt und dann abgefragt.
Bist du dir übrigens sicher, dass du die display-Eigenschaft auf "block" und nicht "list-item" setzen möchtest?
Mhmm... Im Augenblick taugt mir block, behalts aber im Hinterkopf!
Oder kann ich die Höhe von <li id="l2"> einfacher ermitteln?
Du kannst das Element getrost einblenden, die Höhe abfragen und anschließen sofort wieder ausblenden. Weil Javascript das UI blockiert, dürfte es auch nicht zu einem Aufblitzen des Elements kommen.
Ah! Danke! Ist das gängige Praxis bei derartigen Verfahren?
Viele Grüße
Siri
Hi!
Ist das gängige Praxis bei derartigen Verfahren?
Ja. Das machen jQuery & Co. genauso.
Mathias
[latex]Mae govannen![/latex]
Jetzt meine Idee: <li id="l2"> clonen, display auf block setzen, und offsetHeight abfragen. Ist das legitim?
[...]
Bist du dir übrigens sicher, dass du die display-Eigenschaft auf "block" und nicht "list-item" setzen möchtest?
oder noch einfacher auf element.style.diplay = '';
, dann muß man sich um den Typ des Elements nicht kümmern.
Stur lächeln und winken, Männer!
Kai
Array(16).join("x" - 1) + " Batman!"
Hallo,
oder noch einfacher auf
element.style.diplay = '';
, dann muß man sich um den Typ des Elements nicht kümmern.
Dasch ja man auch ganz interessant! Damit kann ich die height nach dem Zuklappen "neutralisieren".
Viele Grüße
Siri