我正在开发一个绘制括号的库。
我使用javascript计算每个元素(匹配和线条)的坐标。每个元素都有
由于我使用了
我使用javascript计算每个元素(匹配和线条)的坐标。每个元素都有
position: absolute;
属性,并使用left
和top
来设置它们的x
和y
坐标。由于我使用了
position: absolute;
,所以需要将父元素设置为position: relative;
,以便子元素相对于其父元素定位。
这个方案一开始运行得很完美,直到我发现父元素的高度没有从其子元素中更新,因为使用 position: absolute;
属性的元素会脱离文档流。
我需要父元素有高度,以便我可以在下面放置其他元素,并给父元素添加样式,例如 background-color
...
是否有替代绝对定位的方法,可以使用 x 和 y 坐标,但同时保持元素在文档流中,以允许父元素的
width
和height
自动调整?如果不可能,是否有办法使用原生 JavaScript(没有 jQuery 或其他库)来查找父 div 内容的宽度和高度。如果可以,我可以通过 JavaScript 设置父元素的
width
和height
样式。
我已经尝试过的方法
我尝试将子元素设置为position: relative;
而不是position: absolute;
,我相信如果只有一个子元素,这样做会起作用。然而,如果有多个子元素,它们不再相对于父元素,而是相对于前一个子元素,从而导致混乱。
- 即使父元素没有高度,页面上仍然有垂直滚动条。我试图使用javascript获取
document
、document.body
和window
等元素的scrollHeight
和height
,但这并没有奏效,因为结果要么是undefined
,要么是不正确的。
目前我的临时解决方案是将body
的高度设置为2500px
,这应该是它所需的最大高度。问题在于总会有一个滚动条,大多数情况下滚动到无处可去。
代码
<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;
}
感谢您的帮助,非常感激!
JSFiddle: https://jsfiddle.net/jmjcocq8/1/
Solution: https://jsfiddle.net/jmjcocq8/2/