如何为不同高度的元素制作网格?

时间:2018-11-21 12:57:47

标签: javascript html css web-applications

我正在使用Web应用程序,但是遇到以下问题:

我想显示一个可以具有不同的blockHeight和Width的图块网格。  See this simplified picture

出于兼容性原因,我不能使用CSS GRID。

我得到一个具有不同blockHeights和blockWidths的Tile列表,以显示在我的网格中。例如。现在,blockHeight为2的图块(如上图中的第一个图块)的高度现在是其两倍高。显然,这不会创建另一个Row,因此在两个小图块下面有一个空白空间。

如何在不使用CSS GRID的情况下删除网格的空白?

谢谢!

3 个答案:

答案 0 :(得分:1)

对不起,但是您不能只使用CSS吗?

.floatingItems {
  float: left;
}

这样,项将始终尝试与左侧对齐。 这样,您就不必包括一个库。

提琴:https://jsfiddle.net/49nq3afx/4/

答案 1 :(得分:0)

使用以下库,您可以实现以下目的:

  

https://haltu.github.io/muuri/

盒子尺寸的CSS计算与默认盒子尺寸成比例;占利润。

var grid = new Muuri('.grid', {
  dragEnabled: true
});
.grid {
  position: relative;
  background: #6EB3CA
}
.item {
  display: block;
  position: absolute;
  width: 64px;  /* Default 1 unit */
  height: 64px; /* Default 1 unit */
  margin: 4px;  /* Margin */
  z-index: 1;
  background: #fff;
  color: #000;
  border-radius: 4px;
}
.item.muuri-item-dragging {
  z-index: 3;
}
.item.muuri-item-releasing {
  z-index: 2;
}
.item.muuri-item-hidden {
  z-index: 0;
}
.item-content {
  position: relative;
  width: 100%;
  height: 100%;
  text-align: center;
  line-height: 64px;
}

.item-6x2 {
  width:  424px; /* (64 * 6) + (4 * 10) */
  height: 136px; /* (64 * 2) + (4 *  2) */;
}
.item-2x1 {
  width:  136px; /* (64 * 2) + (4 * 2) */
  height:  64px; /* (64 * 1) + (4 * 0) */;
}
.item-6x2 .item-content {
  line-height: 136px;
}
<script src="https://unpkg.com/web-animations-js@2.3.1/web-animations.min.js"></script>
<script src="https://unpkg.com/hammerjs@2.0.8/hammer.min.js"></script>
<script src="https://unpkg.com/muuri@0.7.1/dist/muuri.min.js"></script>

<div class="grid">
  <div class="item item-6x2">
    <div class="item-content">
      6×2
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
  <div class="item item-2x1">
    <div class="item-content">
      2×1
    </div>
  </div>
</div>

答案 2 :(得分:0)

user10357213,

您有两个悬而未决的问题。如果给出的答案有帮助,则接受相应的答案会很好。或者至少回答是否以及为什么这个答案不适合您。

(无法评论飞机,这就是为什么我发布另一个答案。对不起)