gpt4 book ai didi

html - 子 div 高度伸出父包装

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:11 25 4
gpt4 key购买 nike

我试图让导航保持在包装器的边界内。导航位于 100% 高度的包装器内,我希望导航填充剩余高度。当然,我也在导航中使用了 100%,但它会从 div 中伸出来。我做错了什么?

body {
background: blue;
background-size: cover;
font: 14px "Roboto", sans-serif;
font-weight: 300;
padding: 0;
margin: 2% 4%;
}

* {
box-sizing: border-box;
}

.wrapper {
background: #fff;
display: flex;
flex-flow: row wrap;
height: 100vh;
border-radius: 5px;
}

.header {
display: flex;
flex-flow: row;
height: 75px;
width: 100%;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
background: purple;
}

.box {
padding: 10px;
height: 100%;
}

.box:last-child {
sborder-bottom: 2px solid #EBEBEB;
sswidth: 100%;
}

.box:first-child {
width: 223px;
sborder-right: 2px solid #EBEBEB;
}

.main {
padding: 10px;
order: 2;
height: 100%;
}

.side {
border-bottom-left-radius: 5px;
background: #292F32;
color: #6B757D;
padding: 10px;
flex: 0 0 223px;
order: 1;
height: 100%;
}


/*# sourceMappingURL=style.css.map */
<body>
<div class="wrapper">
<div class="header">
<div class="box">
intersect
</div>

<div class="box">
rest
</div>
</div>

<div class="side">
navigation
</div>

<div class="main">
main content
</div>
</div>
</body>

最佳答案

What am I doing wrong?

你到处都使用 height: 100%,这将无法与 Flexbox 一起正常跨浏览器工作。

相反,使用 Flexbox 自己的属性,例如flex: 1,这将填充 flex 列容器中的剩余空间/高度。

在这种情况下,最简单的解决方案是包装side/main,使内部包装器display: flex 并更改外部包装器到 flex-direction: column


包装器的需要是因为有了包装启用 flex 行容器,align-content 控制元素是否拉伸(stretch)并填充父级的高度。

当你给 header 一个高度时,你将无法完成它,因为它会在 header 之间产生一个gap> 和 side/main,除非 header 的高度是固定的并且不应扩展,即使内容强制它扩展也是如此。

如果是这种情况,当你使用固定高度时,一开始就不需要 Flexbox,你可以改用 CSS Calc .


请注意,我还删除了一些不必要的属性,这些属性不是不需要的就是默认的。

堆栈片段

body {
background: blue;
background-size: cover;
font: 14px "Roboto", sans-serif;
font-weight: 300;
margin: 2% 4%;
}

* {
box-sizing: border-box;
}

.wrapper {
background: #fff;
display: flex;
flex-direction: column; /* added */
height: 100vh;
border-radius: 5px;
}

.header {
display: flex;
height: 75px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
background: purple;
}

.box {
padding: 10px;
}

.box:last-child {
sborder-bottom: 2px solid #EBEBEB;
sswidth: 100%;
}

.box:first-child {
width: 223px;
sborder-right: 2px solid #EBEBEB;
}

.wrapper-inner {
flex: 1; /* fill available space/height */
display: flex;
}


.main {
padding: 10px;
}

.side {
border-bottom-left-radius: 5px;
background: #292F32;
color: #6B757D;
padding: 10px;
flex: 0 0 223px;
}


/*# sourceMappingURL=style.css.map */
<body>
<div class="wrapper">
<div class="header">
<div class="box">
intersect
</div>

<div class="box">
rest
</div>
</div>

<div class="wrapper-inner">
<div class="side">
navigation
</div>

<div class="main">
main content
</div>
</div>

</div>
</body>

关于html - 子 div 高度伸出父包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48458499/

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