期望输出
我正在尝试实现一个嵌套的Flexbox布局。
我希望第二列和第三列中的子元素在父元素上具有完整的大小。
当第一列的depth =1时,它可以工作,但当我添加Flex容器时,它会失败。
我对这个错误的思考
我被迫组合flex: 1和display: flex,以便使用相同的类,而不管它是用作容器还是项。
有什么想法吗?
实际代码
.grid-stretch {
display: flex;
align-items: stretch;
background-color: yellow; /* to track errors */
}
.child-centered {
display: flex;
align-items: center;
justify-content: center;
background-color: green; /* to track errors */
}
html,
body {
height: 100%;
}
body {
margin: 0;
overflow-wrap: break-work;
}
.root {
max-width: 1200px;
height: 100%;
}
header {
min-height: 80px;
/* set a solid border inside the header and not on its edge */
box-sizing: border-box;
border-bottom: 3px solid black;
}
/* depth 1 */
header nav:nth-child(1) {
flex: 3;
background-color: blue;
}
header nav:nth-child(2) {
flex: 5;
background-color: white;
}
header nav:nth-child(3) {
flex: 2;
background-color: red;
}
/* depth 2 */
header nav:nth-child(2) div {
background-color: orange;
}
header nav:nth-child(3) div div {
background-color: orange;
}<!DOCTYPE html>
<html>
<body>
<div class='root'>
<header class='grid-stretch'>
<nav class='child-centered'>
<a>link</a>
</nav>
<nav class='child-centered'>
<div class='grid-stretch'>
<div class='child-centered'>
<a>link</a>
<a>link</a>
<a>link</a>
</div>
</div>
</nav>
<nav class='child-centered'>
<div class='grid-stretch'>
<div class='child-centered'>
<a>link</a>
<a>link</a>
<a>link</a>
</div>
</div>
</nav>
</header>
</div>
</body>
</html>
发布于 2020-09-14 05:54:25
如下所示更新您的代码:
.grid-stretch {
display: flex;
align-items: stretch;
background-color: yellow; /* to track errors */
}
.child-centered {
display: flex;
align-items: center;
justify-content: center;
text-align:center;
background-color: green; /* to track errors */
}
/* added */
.flex {
display: flex;
}
.flex *{
flex-grow:1;
}
/**/
html,
body {
height: 100%;
}
body {
margin: 0;
overflow-wrap: break-work;
}
.root {
max-width: 1200px;
height: 100%;
}
header {
min-height: 80px;
/* set a solid border inside the header and not on its edge */
box-sizing: border-box;
border-bottom: 3px solid black;
}
/* depth 1 */
header nav:nth-child(1) {
flex: 3;
background-color: blue;
}
header nav:nth-child(2) {
flex: 5;
background-color: white;
}
header nav:nth-child(3) {
flex: 2;
background-color: red;
}
/* depth 2 */
header nav:nth-child(2) div {
background-color: orange;
}
header nav:nth-child(3) div div {
background-color: orange;
}<!DOCTYPE html>
<html>
<body>
<div class='root'>
<header class='grid-stretch'>
<nav class="flex">
<a class="child-centered">link</a>
</nav>
<nav class="flex">
<div class='grid-stretch'>
<div class='child-centered'>
<a>link</a>
<a>link</a>
<a>link</a>
</div>
</div>
</nav>
<nav class="flex">
<div class='grid-stretch'>
<div class='child-centered'>
<a>link</a>
<a>link</a>
<a>link</a>
</div>
</div>
</nav>
</header>
</div>
</body>
</html>
https://stackoverflow.com/questions/63875212
复制相似问题