【发布时间】:2018-05-29 18:44:46
【问题描述】:
我遇到了一些我不理解的行为。当我在列表上设置最大高度并在列表项上设置边距的徽章列表时,列表项的内容会与边距成比例地溢出其容器。
.badgers {
display: flex;
flex-direction: column;
max-height: 10em;
overflow: auto;
border: 1px dashed red;
}
.badge, .title, .location, .timestamp {
display: flex;
}
.badge {
flex-direction: column;
border: 1px solid black;
margin: 1em 0;
}
<div class="badgers">
<div class="badge">
<span class="title">Title</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
<div class="badge">
<span class="title">Title 2</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
<div class="badge">
<span class="title">Title 3</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
</div>
如果我删除边距,则没有溢出。
.badgers {
display: flex;
flex-direction: column;
max-height: 10em;
overflow: auto;
border: 1px dashed red;
}
.badge, .title, .location, .timestamp {
display: flex;
}
.badge {
flex-direction: column;
border: 1px solid black;
}
<div class="badgers">
<div class="badge">
<span class="title">Title</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
<div class="badge">
<span class="title">Title 2</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
<div class="badge">
<span class="title">Title 3</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
</div>
如果我将包装器更改为 display: block 并保留边距,那么列表看起来就像我想要的那样。
.badgers {
max-height: 10em;
overflow: auto;
border: 1px dashed red;
}
.badge, .title, .location, .timestamp {
display: flex;
}
.badge {
flex-direction: column;
border: 1px solid black;
margin: 1em 0;
}
<div class="badgers">
<div class="badge">
<span class="title">Title</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
<div class="badge">
<span class="title">Title 2</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
<div class="badge">
<span class="title">Title 3</span>
<span class="location">Location</span>
<span class="timestamp">Timestamp</span>
</div>
</div>
那么为什么列表为display: flex; flex-direction: column时内容溢出,而列表为display: block时却没有?
【问题讨论】: