【发布时间】:2016-11-22 06:40:00
【问题描述】:
我有一个画廊布局,我想用边距分隔每个框。问题是每行中的最后一个框与网格不对齐;右侧还有空间,如何在不使用填充的情况下做到这一点? (这将迫使我添加另一个包装 div)
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
ul {
list-style-type: none;
}
.flex {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.align-center {
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.space-between {
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between;
}
.container {
max-width: 1000px;
margin: 0 auto;
height: 100%;
padding: 0 1em;
border: 1px solid;
}
nav {
background: #464646;
height: 70px;
}
.box {
background: lightblue;
padding: 1em;
-webkit-box-flex: 0;
-webkit-flex: 0 0 calc(50% - 1em);
-ms-flex: 0 0 calc(50% - 1em);
flex: 0 0 calc(50% - 1em);
text-align: center;
margin-right: 1em;
margin-bottom: 1em;
}
<nav>
<div class="container flex align-center space-between">
<ul>
<li>Logo</li>
</ul>
<ul>
<li>Home</li>
</ul>
</div>
</nav>
<div class="container">
<header>
<h1>Header</h1>
</header>
</div>
<div class="container">
<div class="gallery flex">
<div class="box">BOX 1</div>
<div class="box">BOX 2</div>
<div class="box">BOX 3</div>
</div>
</div>
注意:我不能使用 flex grow: 1 因为我并不总是连续有两个框。
我不能在中间使用空格,因为网格是动态的,例如,如果框的宽度为 33.33%,并且您有五个框,则第二行将有两个框,一个在左侧,第二个在右侧。
【问题讨论】:
-
好问题。只发布相关的 HTML / CSS 会很有用。这将使阅读更容易。