【问题标题】:Creating a Masonry Layout using CSS? [duplicate]使用 CSS 创建砌体布局? [复制]
【发布时间】:2015-05-14 05:19:54
【问题描述】:

我想仅使用 CSS 而不是 jquery 或 javascript 创建此布局。是否可能,如果可以,请指导我找到正确的来源。谢谢你:)

我试过了,但效果不佳: http://codepen.io/anon/pen/GJZWoX

HTML:

<div class="parent">

  <div class="red">
  </div>

  <div class="blue">
  </div>

  <div class="red">
  </div>

   <div class="red">
  </div>

</div>

CSS:

.parent{
  width:330px;
}

.red{
  float:left;
  width:150px;
  height:150px;
  margin-bottom:10px;
  margin-left:10px;
  background-color:red;
}

.blue{
  float:left;
  width:150px;
  height:300px;
  margin-bottom:10px;
  margin-left:10px;
  background-color:blue;
}

【问题讨论】:

  • 使用column-countcolumn-gap
  • 你不只需要设置height: auto 并插入内容吗? div 的高度会根据内容的大小自动改变它的高度。基本上,您所要做的就是设置每列的列数和宽度。

标签: html css web masonry


【解决方案1】:

Flexbox 允许您这样做,因为它能够分发内容和间隙。

Flexbox 的使用不是很容易,但并非不可能。这里有一些帮助: https://css-tricks.com/snippets/css/a-guide-to-flexbox/

.parent{
  background: green;
  width:330px;
  height: 330px;
  display: flex;
  flex-flow: column wrap;
}

.red, .blue{
  margin: 10px;
}
.red{
  flex: 1 1 100px;;
  background-color:red;
}

.blue{
  flex: 2 2 150px;
  background-color:blue;
}

这是给你的一支笔:http://codepen.io/vandervals/pen/OVNvaE?editors=110

所以,这里发生的事情的解释如下:

  1. 父级必须有display: flex

  2. 你必须告诉流向,在这种情况下你需要列。

  3. 对于项目,您必须定义 flex 属性。在这种情况下,您希望红色更小,那么比例将为 1,如果可以,趋势将是 100px。蓝色具有双重“权重”,趋势为 150px。

【讨论】:

  • 我正在帮助传播我找到的解决此问题的解决方案,以便可以轻松找到它。 stackoverflow.com/a/25668648/871781 CSS - 没有 flexbox,没有垂直间隙!
猜你喜欢
  • 2018-10-31
  • 1970-01-01
  • 2021-06-29
  • 2021-12-22
相关资源
最近更新 更多