Masonry UL LI lister,图像不适合

时间:2015-04-24 14:44:17

标签: jquery masonry

我尝试使用isotopemasonry风格显示图片。

我在标题中包含以下内容:

<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/2.2.0/isotope.pkgd.min.js"></script>
        <script>
            var $container = $('.album-lister');
            $container.isotope({
                itemSelector: '.thumb',
                masonry: {
                    columnWidth: 100
                }
            })
        </script>

我的HTML看起来像这样:

<ul class="album-lister">
    <li class="thumb"><img src="http://localhost/57898d673ae1f7482d04ab1c3de60363.jpg"></li>
    <li class="thumb"><img src="http://localhost/behind_scenes_1.jpg"></li>
    <li class="thumb"><img src="http://localhost/behind_scenes_2.jpg"></li>
    <li class="thumb"><img src="http://localhostbehind_scenes_3.jpg"></li>
</ul>

我添加了以下CSS:

.album-lister .thumb img{ max-width: 100%;height:auto;}
.album-lister .thumb{width:20%;}

我错过了什么?没有任何内容可以调整为100px,没有区别。

编辑:我尝试过按照建议使用imagesLoaded:

<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/2.2.0/isotope.pkgd.min.js"></script>
        <script src="http://imagesloaded.desandro.com/imagesloaded.pkgd.min.js"></script>
    var $ container = $(&#39; .album-lister&#39;)。imagesLoaded(function(){                     $ container.isotope({                         itemSelector:&#39; .thumb&#39;,                         layoutMode:&#39; fitRows&#39;,                         石工: {                           columnWidth:100                         }                     });                 });

2 个答案:

答案 0 :(得分:2)

试试这个:

<script type="text/javascript">

 jQuery(document).ready(function () {
            var $container = $('.album-lister');
            $container.isotope({
                itemSelector: '.thumb',
                masonry: {
                    columnWidth: 100
                }
            })

  });

答案 1 :(得分:0)

在加载图像之前,你正在将JS解雇。处理此问题的最佳方法是使用imagesLoaded,它将等待在Isotope运行之前加载图像。这比等待$(document).ready()更好,因为Isotope需要知道图像大小才能正确处理布局,并且只有在加载后才能获取它们。

在这里阅读更多内容;

http://isotope.metafizzy.co/appendix.html

您的代码将是;

jQuery(document).ready(function () {
  var $container = $('#album-lister');

  $container.imagesLoaded( function(){
      $container.isotope({
          itemSelector: '.thumb',
          layoutMode: 'fitRows',
          masonry: {
              columnWidth: 100
          }
      });
  });
});

我看到你现在必须单独加载imagesLoaded插件,它实际上是由编写Isotope的Dessandro接管的;

https://github.com/desandro/imagesloaded

这是另一个SO线程的更多调试。

Isotope display gallery after images loaded

最后几点 - 我会使用容器的ID而不是类,我不会将每个项目作为无序列表;

<div id="album-lister">
    <div class="thumb"><img src="http://localhost/57898d673ae1f7482d04ab1c3de60363.jpg"></div>
    <div class="thumb"><img src="http://localhost/behind_scenes_1.jpg"></div>
    <div class="thumb"><img src="http://localhost/behind_scenes_2.jpg"></div>
    <div class="thumb"><img src="http://localhostbehind_scenes_3.jpg"></div>
</div>

从语义上讲,它不是一个列表,你只需通过标记就可以让你的CSS生活更加艰难。