jQuery Masonry 呈现 "row blocks"而不是拟合元素

标签 jquery css jquery-masonry jquery-isotope

jQuery masonry 插件的一个简单用法是将图像放置在“ block ”中,而不是在空白处放置元素。该图自行解释:

enter image description here

有没有办法修复(或至少最小化)这些“空洞”?

HTML:

<!-- this overlay has height 100%, no scroll and position fixed -->
<div class='overlay-container'>

  <!-- the inner container is "scroll-able": -->
  <div class='row' id='ms-container'>

    <!-- masonry items... -->
    <div class='col-md-4 ms-item'>
      <div class='boxcontainer'>
        <img src="photo.png" />
        <h1>
          <a href='#'>
            activity_2
          </a>
        </h1>
      </div>
    </div>
   <!-- more items... -->

  </div>
</div>

JavaScript:

    var $container = $('#ms-container');

    $container.imagesLoaded(function() {
    $container.masonry({

        itemSelector: '.ms-item',
        columnWidth: '.ms-item',
        transitionDuration: 0.4

    });

    });

CSS:

.overlay-container {
    height: 100% !important; 
    position: absolute;
    top:0px;
    width: 58%;
    left: 30px;
    padding: 50px 10px 10px 10px;
    overflow-y: auto;
    overflow-x: hidden;
}

.boxcontainer {
    border:1px solid #ededed;
    background:#fff;
    font-size:13px;
    text-align:center;
    transition:border 500ms ease-out;
    border-bottom:medium double #ddd;
    position:relative;
    overflow:hidden;
}

最佳答案

我曾尝试使用 bootstrap 3 在元素中使用砌体,但我已经放弃了。相反,我使用了 Isotope那要容易得多。 我用你的结构做了一个例子,check it out . 请注意“相对容器”中的插件不要丢失很重要。

HTML

<!-- this overlay has height 100%, no scroll and position fixed -->
<div class='overlay-container'>
  <div class="relative">
    <!-- the inner container is "scroll-able": -->
    <div class='row' id='ms-container'>

      <!-- masonry items... -->
      <div class='col-md-4 ms-item'>
        <div class='boxcontainer'>
          <img src="http://placehold.it/300x500" />
          <h1>
            <a href='#'>
              activity_2
            </a>
          </h1>
        </div>
      </div>

     <!-- more items... -->

    </div>

  </div>
</div>

CSS

.overlay-container {
    height: 100% !important; 
    position: absolute;
    top:0px;
    width: 58%;
    left: 30px;
    padding: 50px 10px 10px 10px;
    overflow-y: auto;
    overflow-x: hidden;
}

.boxcontainer {
    border:1px solid #ededed;
    background:#fff;
    font-size:13px;
    text-align:center;
    transition:border 500ms ease-out;
    border-bottom:medium double #ddd;
    position:relative;
    overflow:hidden;
}

.relative { position:relative; }

JavaScript

$("#ms-container.row").isotope({
    masonry: {
        columnWidth: ".col-md-4"
    },
    itemSelector: ".ms-item",
    percentPosition: !0,
    layoutMode: "masonry"
});

希望这对您有所帮助。

关于jQuery Masonry 呈现 "row blocks"而不是拟合元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796489/

相关文章:

javascript - 如何检查 HTML 中是否存在这样的元素(它是否存在于 anchor )?

php - 将数组值传递给模态

Html CSS 圆 Angular 帮助堆叠元素

html - 包含两列的全宽 DIV 的单独背景颜色

javascript - 无法使用 Angular Masonry

jquery-masonry - jQuery Masonry 无限滚动和图片与我的 tumblr 主题重叠问题

javascript - jquery 响应式图像淡入淡出过渡

javascript - Highchart 与 html 网站中 SQL 数据的范围选择器

html - 在 CSS 动画之后,对象稍微改变了位置

html - Masonry Jquery 布局环绕框(如字母 L)