我正在进行flexbox布局,我遇到的问题是flex项目只会在firefox中溢出容器。这里有一个例子,因为我可以提出一个例子(对不起,它并非超级极小,我不确定是什么造成了这个问题,所以很难知道我可以删除的内容):
<div class="css-190tu11">
<h1 class="css-1qqir8k">Blah</h1>
<div class="css-131b9cy">
<div class="css-1suni8j">
<a class="css-yq2t95" href="some-url">
<span class="icon icon-register css-nwymqb" aria-hidden="true"></span>
<h2 class="css-1892n22">Title</h2>
<div class="css-kgza95">Description</div>
</a>
<div class="css-kujdaf">
Some special thing
</div>
</div>
<div class="css-1suni8j">
<a class="css-yq2t95" href="some-url">
<span class="icon icon-register css-nwymqb" aria-hidden="true"></span>
<h2 class="css-1892n22">Title</h2>
<div class="css-kgza95">Description</div>
</a>
<div class="css-dkez8"></div>
</div>
<div class="css-1suni8j">
<a class="css-yq2t95" href="some-url">
<span class="icon icon-register css-nwymqb" aria-hidden="true"></span>
<h2 class="css-1892n22">Title</h2>
<div class="css-kgza95">Description</div>
</a>
<div class="css-dkez8"></div>
</div>
<div class="css-1suni8j">
<a class="css-yq2t95" href="some-url">
<span class="icon icon-register css-nwymqb" aria-hidden="true"></span>
<h2 class="css-1892n22">Title</h2>
<div class="css-kgza95">Description</div>
</a>
<div class="css-dkez8"></div
</div>
</div>
</div>
CSS:
.css-190tu11,
[data-css-190tu11] {
padding: 12px 48px 24px 48px;
border: solid 1px #e0e0e0;
}
.css-1qqir8k,
[data-css-1qqir8k] {
font-size: 24px;
font-weight: 300;
margin-bottom: 18px;
margin-top: 0;
}
.css-131b9cy,
[data-css-131b9cy] {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
}
.css-131b9cy > *,
[data-css-131b9cy] > * {
flex: 0 1 auto;
margin-left: 0;
margin-right: 0;
}
.css-131b9cy > *:not(:first-child),
[data-css-131b9cy] > *:not(:first-child) {
margin-left: 10px;
}
.css-131b9cy > *:not(:last-child),
[data-css-131b9cy] > *:not(:last-child) {
margin-right: 10px;
}
.css-1suni8j,
[data-css-1suni8j] {
display: flex;
background-color: white;
flex-direction: column;
justify-content: space-between;
text-align: center;
max-width: 186px;
min-width: 120px;
height: 240px;
}
.css-1suni8j > *,
[data-css-1suni8j] > * {
margin-top: 0;
margin-bottom: 0;
}
.css-1suni8j > *:not(:first-child),
[data-css-1suni8j] > *:not(:first-child) {
margin-top: 10px;
}
.css-1suni8j > *:not(:last-child),
[data-css-1suni8j] > *:not(:last-child) {
margin-bottom: 10px;
}
.css-yq2t95,
[data-css-yq2t95] {
flex: 1;
justify-content: space-between;
flex-direction: column;
display: flex;
}
.css-yq2t95 > *:last-child,
[data-css-yq2t95] > *:last-child {
flex: 0 1 auto;
}
.css-yq2t95 > *,
[data-css-yq2t95] > * {
margin-top: 0;
margin-bottom: 0;
}
.css-yq2t95 > *:not(:first-child),
[data-css-yq2t95] > *:not(:first-child) {
margin-top: 5px;
}
.css-yq2t95 > *:not(:last-child),
[data-css-yq2t95] > *:not(:last-child) {
margin-bottom: 5px;
}
.css-nwymqb,
[data-css-nwymqb] {
transition: all 0.5s ease;
border-radius: 50%;
display: block;
margin-left: auto;
border: 1px solid #0070ba;
height: 60px;
width: 60px;
font-size: 30px;
line-height: 54px;
margin-right: auto;
}
.css-1892n22,
[data-css-1892n22] {
font-weight: normal;
flex: 0 1 auto;
color: inherit;
padding: 0;
font-size: 16px;
height: 80px;
}
.css-kgza95,
[data-css-kgza95] {
font-weight: normal;
font-size: 11px;
color: #333333;
height: 76px;
}
.css-kujdaf,
[data-css-kujdaf] {
min-height: 36px;
background-image: linear-gradient(93deg, #1446a0, #0070ba);
width: 100%;
color: white;
display: flex;
justify-content: center;
align-items: center;
padding: 10px;
}
.css-dkez8,
[data-css-dkez8] {
min-height: 36px;
}
以下是Chrome和Safari中的内容(这就是我想要的样子):
这就是Firefox中的样子:
即使Internet Explorer 10也以我想要的方式显示它! (无法在codepen中验证,因为我删除了供应商前缀,但它可以在我的应用中运行。)
此处为此a codepen。
感谢您的帮助!
答案 0 :(得分:5)
Turns out溢出的元素需要有min-height: 0
。我不知道为什么,但是把它放在.css-yq2t95
上,一切都很顺利。谢谢大家投球!
答案 1 :(得分:0)
具有类css-1suni8j
的容器具有固定高度(240px),并且其中的元素(h2,DIV)具有固定宽度,这使得具有按钮的最后一个DIV位于其边界下方。如果擦除240px高度,它将保留在容器内。
由于列中的元素数量不同且justify-content
为space-between
,因此无法将其他元素保持在相同的高度。