如何使用isotope js获得这种特定的砌体布局(仅关闭一个网格项目!)?

时间:2018-05-22 13:12:57

标签: javascript jquery css jquery-isotope isotope

我确定您已经听说过isotope.js,但这里有一个指向项目部分的链接:https://isotope.metafizzy.co/layout-modes/masonry.html

这是我想要的所需布局的图像:

enter image description here

这是一个尽可能接近布局的codepen:https://codepen.io/levijosman/pen/GdewvN

我已经尝试更改项目的顺序(基于布局宽度),切换到不同的布局模式(如Packery)。正如您所看到的,我只是从预期布局中删除了一个网格项。使用isotope.js可以实现布局,还是不是?

<h1>Isotope - masonry layout mode</h1>
<div class="container">
<div class="grid">
  <div class="grid-item grid-item--width2 grid-item--height2"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item grid-item--height2"></div>
  <div class="grid-item grid-item--width2 grid-item--height2"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>  
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
</div>  
</div>

.grid-item {
  float: left;
  width: 313.81px;
  height: 200px;
  margin-left: 10px;
  margin-bottom: 10px;
  background: #0D8;
  border: 2px solid #333;
  border-color: hsla(0, 0%, 0%, 0.7);
}

.grid-item--width2 { width: 637.64px; }
.grid-item--height2 { height: 410px; }

1 个答案:

答案 0 :(得分:2)

看起来主要问题在于javascript中的itemSelector;它应该是.grid-item而不是masonry,如下所示:

$('.grid').isotope({
  itemSelector: '.grid-item',
  masonry: {
    columnWidth: 100, 
    gutter: 8
  }
});

然后它应该按预期流动,您只需要在大框之后用另一个grid-item--height2 grid-item替换您的div课程:

<div class="grid">
  <div class="grid-item grid-item--width2 grid-item--height2"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item grid-item--width2 grid-item--height2"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>  
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
</div>  

https://codepen.io/anon/pen/WJmmej