【发布时间】:2015-10-30 20:22:47
【问题描述】:
我想创建一个磁贴布局(类似于 Metro 风格的磁贴布局或所谓的 Windows 8)。所以我有一些瓷砖/盒子,有些是二次方的,有些可以是 sice 和二次方的两倍,有些可以有两倍的宽度。到目前为止一切都很好,但我有一个响应能力问题,我认为 flexbox 会为我解决......但也许我错了。
目前这些盒子的布局是这样的(箭头显示盒子应该“流动”的位置):
甚至这样,如果在中间某处放置一个大图块(注意:编号也可能有点不同,例如大图块左侧的框可能是 1-4,然后大图块可能是5号,如果这更容易做到的话):
这是我目前拥有的代码(见http://codepen.io/anon/pen/oXmraK):
<div class="container">
<div class="bigbox">Box 1</div>
<div class="box">Box 2</div>
<div class="box">Box 3</div>
<div class="box">Box 4</div>
<div class="box">Box 5</div>
<div class="box">Box 6</div>
<div class="box">Box 7</div>
<div class="widebox">Box 8</div>
<div class="box">Box 9</div>
<div class="box">Box 10</div>
<div class="box">Box 11</div>
<div class="box">Box 12</div>
<div class="box">Box 13</div>
<div class="box">Box 14</div>
<div class="box">Box 15</div>
<div class="box">Box 16</div>
<div class="box">Box 17</div>
<div class="box">Box 18</div>
<div class="box">Box 19</div>
</div>
还有 CSS:
.container {
display:flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-content: flex-start;
align-items: stretch;
}
.box, .bigbox, .widebox {
background-color: olive;
width: 100px;
height: 100px;
margin: 5px;
}
.bigbox {
background-color: olive;
width: 210px;
height: 210px;
}
.widebox {
background-color: olive;
width: 210px;
height: 100px;
}
任何想法如何实现所需的布局?不知道没有 JS 是否可行,但我希望可以。
【问题讨论】:
-
你能试试 jQuery Masonry。可能对你有帮助
-
另见 Freewall(也基于 jQuery)。我无法从纯 css 中获得这种行为
标签: html css layout responsive-design flexbox