當下面的代碼中的祖先是display: block
時,它按照預期工作。當它是display: flex
嵌套網格縮小。爲什麼我的CSS網格在其祖先顯示時收縮:flex?
我想了解爲什麼會發生這種情況。
只需在下面的代碼中取消註釋display: block
即可查看結果。電網停下來跨越允許的整個區域。
.ctnr{
display: flex;
//display: block;
flex-flow: column;
align-items: stretch;
}
header{ background: red; height: 2rem; }
main{
\t max-width: 15rem;
\t height: 25rem;
\t margin: auto;
\t overflow: auto;
}
.grid{
display: grid;
\t height: 25rem;
align-items: stretch;
grid-template-areas:
"c1 c1 c1 c2 c3 c3 c3"
"c4 c4 c4 c4 c3 c3 c3"
"c4 c4 c4 c4 c5 c6 c6"
"c4 c4 c4 c4 c7 c7 c7";
\t grid-gap: 10px;
}
.grid article{
\t cursor: pointer;
}
.grid article:nth-child(odd){
background: yellow;
}
.grid article:nth-child(even){
background: cyan;
}
.c1{ grid-area: c1; }
.c2{ grid-area: c2; }
.c3{ grid-area: c3; }
.c4{ grid-area: c4; }
.c5{ grid-area: c5; }
.c6{ grid-area: c6; }
.c7{ grid-area: c7; }
<div class="ctnr">
<header></header>
<main>
<div class="grid">
<article class="c1">1</article>
<article class="c2">2</article>
<article class="c3">3</article>
<article class="c4">4</article>
<article class="c5">5</article>
<article class="c6">6</article>
<article class="c7">7</article>
</div>
</main>
<footer></footer>
</div>
這是通過給予寬度主
main{
width: 90%;
max-width: 15rem;
// ...
}
這種「決心」的問題解決了,但是我真的不明白這裏發生了什麼。例如,header
即使沒有寬度也不縮小。
https://jsfiddle.net/6k2313ub/1/
摘要:'保證金:auto'不起作用同一個Flexbox的內部。最後一個環節需要處理很多。太好了! – Ced
只是FYI,如果你使用'align-self:center'而不是'margin:auto',你會得到同樣的效果。兩種方法都消耗線上的空閒空間。這就是flex的工作原理。塊佈局在這方面是不同的。 –