Ich arbeite an einer Bibliothek, die Klammern zeichnet.Alternative zur absoluten Positionierung, die die Elternhöhe aktualisiert
Ich berechne die Koordinaten jedes Elements (Streichhölzer und Linien) mit Javascript. Jedes Element hat position: absolute;
und verwendet left
und top
, um ihre x
und y
Koordinaten festzulegen.
Da ich position: absolute;
verwende, ist es erforderlich, das übergeordnete Element auf position: relative;
festzulegen, damit die untergeordneten Elemente relativ zu ihrem übergeordneten Element positioniert werden.
Das war perfekt arbeiten, bis ich, dass die Eltern Höhe bemerkte nicht von seinen Kindern wurde aktualisiert wird, weil position: absolute;
Elemente aus dem Fluss des Dokuments getroffen werden.
muss ich die Eltern Höhe haben, so dass ich andere Elemente darunter platzieren können, und geben die übergeordneten Stile wie background-color
...
Gibt es eine Alternative zur absoluten Positionierung, die x und y verwendet Koordinaten aber hält sie auch in den Fluss des Dokuments, damit die Eltern
width
undheight
automatisch anpassen?Oder, wenn das nicht möglich ist, ist es weg mit Vanille javascript (keine jQuery oder andere Bibliotheken), um die Breite und Höhe des Inhalts des Elternteils div. Wenn das möglich ist, kann ich einfach die
width
undheight
Stile des Elternteils durch Javascript setzen.
Was ich versucht habe bisher
- Ich habe versucht, die Kinder zu
position: relative;
stattposition: absolute;
zu setzen, die ich arbeiten würde glauben, wenn Sie nur ein Kind haben. Bei mehr als einem Kind sind die Kinder jedoch nicht relativ zum Elternteil, sondern sind nun relativ zum vorherigen Kind, was die Dinge durcheinander bringt.
- Auch wenn die Eltern keine Höhe hat es noch auf der Seite eine vertikale Bildlaufleiste ist. Mit Javascript versuchte ich, die
scrollHeight
undheight
Elemente wiedocument
,document.body
undwindow
zu bekommen. Dies hat nicht funktioniert, weil entweder das Ergebnisundefined
war oder das Ergebnis falsch war.
Gerade jetzt meine temporäre Lösung ist body
Höhe 2500px
zu setzen, die die höchste es jemals sein müssen sein sollte. Das Problem dabei ist, dass es immer eine Bildlaufleiste geben wird, die meistens zu nichts scrollt.
-Code
<div class="BrackChart_wrapper">
<div class="BrackChart_match"> ... </div>
<div class="BrackChart_line"></div>
etc.
</div>
.BrackChart_wrapper {
position: relative;
top: 0px;
left: 0px;
}
.BrackChart_match, .BrackChart_line {
position: absolute;
}
Sie für die Hilfe danken, sehr geschätzt!
JSFiddle: https://jsfiddle.net/jmjcocq8/1/
Lösung: https://jsfiddle.net/jmjcocq8/2/
Sie Elemente mit 'links positionieren kann:' und 'top:' CSS-Attribute für relativ positionierte Elemente nicht nur absolute. – pokeybit
@pokeybit: Das OP adressiert das im obigen Post und beschreibt, warum es für ihn nicht funktioniert. –
gute Frage, ich möchte auch, wenn jemand es nur mit CSS beantworten. Wenn möglich. – sagar