Kann ich einfach auf "set" ein element der offsetWidth?
Anmerkung: ich weiß offsetWidth ist nur Lesen
Ich versuche, mich ein pop-up 'div' overlay tr
element mit der exakt gleichen Breite.
Allerdings bin ich ratlos, wie ich meinen div
's width
so dass seine offsetWidth
ist genau das gleiche wie die tr
.
Die Berechnung würde so Aussehen:
div.width = tr.offsetWidth - div.paddingWidth - div.marginWidth
aber sicher gibt es eine bessere Möglichkeit (seit ich denken kann, immer die padding-und margin-offsets in Gruppen von zwei...)
Speziell möchte ich eine Antwort für YUI 2, wenn möglich.
Es sieht für mich so aus, Sie haben Ihre eigene Frage beantwortet. Meine einzige Empfehlung wäre, die div ' s berechneten linken und rechten margin und padding-Werte getrennt, da Sie sich alle unterschiedlich sein.
Ball: Ok, also ich habe den Titel geändert, um einfach - Einstellung der Breite. Ich habe gerade Schwierigkeiten haben, zu glauben, es ist nicht gebaut, um einige Bibliothek, die irgendwo (auch wenn es nicht YUI)
Beachten Sie auch, dass die berechneten styles etc zurückkehren können Werte wie '40px', das ist weniger als nützlich für arithmetische
Sie haben Zugriff auf margin und padding Angaben über die Elemente und den Stil, z.B.
Ball: Ok, also ich habe den Titel geändert, um einfach - Einstellung der Breite. Ich habe gerade Schwierigkeiten haben, zu glauben, es ist nicht gebaut, um einige Bibliothek, die irgendwo (auch wenn es nicht YUI)
Beachten Sie auch, dass die berechneten styles etc zurückkehren können Werte wie '40px', das ist weniger als nützlich für arithmetische
Sie haben Zugriff auf margin und padding Angaben über die Elemente und den Stil, z.B.
div.style.paddingLeft
. Denken Sie daran, es ist eine Einheit, also, wenn es nicht in Pixel, die Sie Pech. Wenn es ist, dann haben Sie analysiert die Anzahl Teil erstmal für deine Berechnung zu arbeiten, das ist der Grund, warum ich lieber alles null würde wie beschrieben in meiner Antwort. (Man kann in der Lage sein zu Holen einige bessere normalisiert margin und padding Angaben über die window.getComputedStyle
Methode, aber ich habe keine Ahnung von browser-Unterstützung für Sie.)InformationsquelleAutor Stephen | 2011-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie null Ihre
div
's margin und Polster dann etwas wie das folgende sollten funktionieren:Je nachdem, wie Sie den Umgang mit Grenzen, die auf Ihrem
div
undtr
können Sie zuweisen möchtentr.clientWidth
statt.Du kannst dann keine margin/Polster wie bei den Eltern - /Kind-Elemente Ihrer
div
zu erreichen das gewünschte Aussehen.Den Schlüssel, um herauszufinden, was Sie tun müssen, ist das Verständnis genau das, was
clientWidth
undoffsetWidth
Messen, und dass die CSS -width
eines Elements wird dessen content-Bereich und schließt jegliche margin, border und padding definiert (finden Sie in der W3C-box-Modell hier).Sie könnte auch die Polsterung etc. in Ihrer Berechnung von Abfragen aus der
Ein block-level-element wie ein
div
standardmäßig belegen die Breite des übergeordneten container, so sollte es keine Notwendigkeit, um seine Breite IIRC.Neue div-container erstellt, und keine hatte mit der richtigen Breite und die formatierte original - /Kind-div-container füllt und hat alle eine eigene schöne Polsterung etc. Dank
InformationsquelleAutor Simon Lieschke
Es ist ein wenig chaotisch und ich kann get downvoted für die Annahme, es aber eine Möglichkeit, Sie könnten dies tun, ohne Unordnung mit Ihrem margin oder padding zu setzen, ist die div-Breite auf einen bekannten Wert, dann finden Sie den Unterschied zwischen dass und das div ist offsetWidth. Das sollte Ihnen sagen, was auf die Breite gesetzt, um zu machen, passen.
Es ist wirklich chaotisch, aber Sie müssen nicht zu kümmern, die padding, margin oder border auf diese Weise.
InformationsquelleAutor JamesH