javascript 在堆叠的之间放置边框< div>,使两< div>个都可见?

zbdgwd5y  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(106)

我有一个Bootstrap 5网站页面,其中有两个垂直堆叠的<div>,一个在另一个下面。
如果底部的<div>不可见,或者<div>太小,我设计的页面将毫无用处。
问题:
1.有没有什么方法可以在页面加载时动态设置这些<div>的高度,以便它们之间的边界大致位于所有系统上的显示中心?它可以基于CSS或JavaScript。
1.是否有方法允许用户通过垂直移动两个<div>之间的边界来调整两个<div>的高度?
Working CodePen:https://codepen.io/softcircuits/pen/mdGomeP

u3r8eeie

u3r8eeie1#

这是一个使用纯CSS的简单解决方案。

<div class="myDiv" id="div1"></div>
<div class="myDiv" id="div2"></div>
html, body {
    margin: 0;
}

.myDiv {
    border: 2px solid black;
    height: 50vh;
    box-sizing: border-box;
    /* min-height: 200px; */
    resize: vertical;
    overflow: auto;
}

#div1 {
    background-color: cornflowerblue;
}

#div2 {
    background-color: crimson;
}

问题1:

要使它们之间的边界居中,您可以使用vh单位将每个窗口的高度设置为视口的一半。vh是一个相对CSS单位,例如100 vh等于浏览器视口的高度。
但是设置height: 50vh会将div内容的高度设置为50vh,而不是整个div,因此高度将为50vh + padding if any + border thickness,为了避免这种情况,请使用box-sizing: border-box。这使得整个高度(包括任何填充和边框厚度)为50vh
更多关于box-sizing属性:https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing
你也可以添加min-height,如果你想避免div太小。

问题二:

要为用户添加调整div大小的功能,请添加以下内容:

resize: vertical;
overflow: auto;

更多关于resize属性:https://developer.mozilla.org/en-US/docs/Web/CSS/resize
我不确定这是否是你在第二个问题中所寻找的。

相关问题