gpt4 book ai didi

html - 为什么我的网格元素的高度计算不正确?

转载 作者:太空狗 更新时间:2023-10-29 13:12:12 25 4
gpt4 key购买 nike

我在 CSS 网格元素的高度方面遇到了问题。我使用的代码是:

.gridContainer {
border: thin solid black;
background: rgba(255, 0, 0, 0.5);
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr;
width: 100px;
height: 100px;
grid-template-areas: 'windowContentHolder';
}

.gridItem {
grid-area: windowContentHolder;
background: rgba(255, 255, 0, 0.5);
width: 200%;
height: 200%;
}

.content {
background: rgba(255, 0, 0, 0.5);
}
<div class="gridContainer">
<div class="gridItem">
<div class="content">hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>
</div>
</div>
</div>

如您所见,gridItem 设置为 height:200% 并且预期结果与预期不符。它应该是父级 (100px) 的两倍高 (200px),任何额外的高度都被滚动条隐藏了,尽管 height 属性似乎没有完全可以设置。

百分比似乎是在考虑子元素高度而不是父元素高度,因为如果我们仔细检查元素,我们会发现它的高度是子元素高度的两倍。

enter image description here

带有“hi”的元素没有像预期的那样溢出。将 gridContainer 更改为 'block' 确实按预期工作,但不适用于 'grid':

.gridContainer {
border: thin solid black;
background: rgba(255, 0, 0, 0.5);
display: block;
width: 100px;
height: 100px;
}

.gridItem {
grid-area: windowContentHolder;
background: rgba(255, 255, 0, 0.5);
width: 200%;
height: 200%;
overflow: auto;
}

.content {
background: rgba(255, 0, 0, 0.5);
}
<div class="gridContainer">
<div class="gridItem">
<div class="content">hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>
</div>
</div>
</div>

最佳答案

网格容器的高度固定为100px。

网格项的高度设置为 200%。

网格项存在于 inside tracks,它存在于inside container

您可以将网格项视为存在于容器下方两层。

换句话说,网格项的父项是轨道,而不是容器。

由于您的行高既不是固定的也不是真正的长度单位——它被设置为 1fr——网格元素的百分比高度失败并且可以根据需要自由扩展行(height : 自动).

无论您在容器上设置什么固定高度,也请在行上设置它。

.gridContainer {
border: thin solid black;
background: rgba(255, 0, 0, 0.5);
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 100px; /* adjustment; value was 1fr */
width: 100px;
height: 100px;
grid-template-areas: 'windowContentHolder';
}

.gridItem {
grid-area: windowContentHolder;
background: rgba(255, 255, 0, 0.5);
width: 200%;
height: 200%;
overflow: auto;
}

.content {
background: rgba(255, 0, 0, 0.5);
}
<div class="gridContainer">
<div class="gridItem">
<div class="content">hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>hi<br/>
</div>
</div>
</div>

关于html - 为什么我的网格元素的高度计算不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51962136/

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