gpt4 book ai didi

html让两个div在高度上匹配

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:48 25 4
gpt4 key购买 nike

我在让 html 中的两个 div 以完全相同的位置结束时遇到问题。这段代码几乎可以解释这个问题:

html,
body {
height: 100%;
}

div.tab {
overflow: hidden;
border: 1px solid #ccc;
background-color: #f1f1f1;
width: 89.7%;
float: right;
display: inline-block;
margin-top: 5px;
}

.tabContent {
height: 100%;
box-sizing: border-box;
}

#divTableList,
.contentDiv {
border: 1px solid #ccc;
}

.contentDiv {
height: 100%;
width: 89.7%;
margin-top: 2px;
background-color: #f1f1f1;
text-align: center;
display: inline-block;
float: right
}

#divTableList {
height: 100%;
box-sizing: border-box;
width: 10%;
margin-top: 5px;
float: left;
background-color: #f1f1f1;
text-align: center;
display: inline-block
}


/* Style the buttons inside the tab */

.tablinksimage {
background-color: inherit;
float: right;
border: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
transform: rotate(0);
transition: all 0.3s;
}

.tablinksimagemain {
background-color: inherit;
float: left;
border: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
transition: all 0.3s;
}


.tablinks:hover,
.menulinks:hover,
.tablelinks:hover {
background-color: #ccc;
}

.tablinks.active,
.menulinks.active,
.tablelinks.active {
background-color: #ccc;
color: #3f51b5;
}

.tablinksimagemain.active {
background-color: #ccc;
}

.tablinksimagemain:hover {
background-color: #ccc;
}
<body>
<div id="tabDiv" style="width: 100%; height: 100%; padding-left: 5px; padding-right: 5px; visibility: visible">
<div class="tab">
<img src="img/table.png" class="tablinksimagemain active" onclick="openTab(event, 'tabContent', 0)">
<img src="img/table-structure.png" class="tablinksimagemain" onclick="openTab(event, 'tabStructure', 1)">
<img src="img/table-info.png" class="tablinksimagemain" onclick="openTab(event, 'tabInfo', 2)">
<img src="img/proc.png" class="tablinksimagemain" onclick="openTab(event, 'tabProc', 3)">
<img src="img/table-query.png" class="tablinksimagemain" onclick="openTab(event, 'tabQuery', 4)">
<img id="imgLogout" class="tablinksimage" src="img/logout.png">
<img id="imgRefresh" class="tablinksimage" src="img/refIcon.png">
</div>
<div id="divTableList">

</div>
<div id="tabContent" class="tabContent" style="display: block">
<div id="contentDivContent" class="contentDiv">

</div>
</div>

<div id="tabStructure" class="tabContent" style="display: none">

</div>

<div id="tabInfo" class="tabContent" style="display: none">

</div>
<div id="tabProc" class="tabContent" style="display: none">

</div>

<div id="tabQuery" class="tabContent" style="display: none">

</div>
</div>
</body>

如您所见,主要内容的 div 比左侧的 div 更远,我知道这是由于菜单栏引起的,但我很困惑,因为它们的高度都设置为 100%他们所在的容器。

我弄乱了百分比以使它们匹配,这让我想到了第二个问题:它们在我的屏幕分辨率上匹配,但一旦更改分辨率(甚至打开 javascript 控制台),它们将不再匹配导致它)。

我不知道我做错了什么,因为我一直认为将高度设置为 100% 意味着它会停在 body 的高度限制处。

有什么想法吗?

最佳答案

混淆的根源可能是像“100%”这样的高度百分比实际上并没有“划分”包含元素的高度。它们只是根据包含元素的高度解析为一个精确值。

所以你可以随意拥有以下内容

<style>
.parent {
height: 100px;
}
.child {
height: 50%;
}
</style>
<div class="parent">
<div class="child">a</div>
<div class="child">b</div>
<div class="child">c</div>
</div>

每个 child 的高度都是 50 像素。这当然意味着将有 3 x 50px 或 150px 的内容,并且内容将溢出父 div。这也很好:HTML 不要求 div 适合其容器。

这基本上就是您的代码段中发生的事情。菜单占用了一些空间,然后另一个 div 占用了 100%,不是剩余空间,而是包含 div 的总大小。这使得它溢出 body ,因此看起来左边的那个太小了。

在支持它的浏览器中,一种解决方案是使用:

div.tab {
height: 100px; // or whatever you want
}

.tabcontent {
height: calc(100% - 100px);
}

在其他浏览器中,答案更棘手。

关于html让两个div在高度上匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47684041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com