【发布时间】:2021-03-10 17:52:33
【问题描述】:
我在让弹性项目在弹性容器内收缩直到达到最小宽度然后换行时遇到问题。我让它在basic codepen 中工作,但我无法让它在某些生产角度代码中工作。
//angular component
<div class="container">
<div class='item" [ngStyle]={minWidth: calc((100vw - 20px) / 3}, maxWidth: 'calc((100vw - 20px) / 2}'>
</div>
</div>
//css
.container {
height: calc(100vh - 50px - 40px - 10px);
display: -webkit-box;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
flex-direction: row;
flex-wrap: wrap;
overflow-y: scroll;
overflow-x: hidden;
width: 100%;
}
.item {
min-width: calc((100vw - 20px) / 3);
max-width: calc((100vw - 20px) / 2);
max-height: 100%;
min-height: 50%;
display: inline-block;
vertical-align: top;
background-color: #262626;
border-right: 1px solid #353535;
text-align: center;
color: white;
-webkit-box-flex: 1;
flex: auto;
}
做了一些研究,我发现当你使用 flex-wrap: wrap 时,换行优先于项目收缩。这就是我在角度组件中看到的行为。两个弹性项目占据了它们容器的 50%,但是当添加第三个而不是收缩它时,它会换行。如果没有 flex-wrap 设置,添加第三个项目会导致所有项目缩小到最小宽度。
然而,在 codepen 中,3 个项目会缩小以适应,只有在添加第 4 个项目后,项目才会开始包装。
【问题讨论】:
-
你能把
.container的宽度从width: 100%;改成width: 100vw;吗?