首页 > 代码库 > bootstrap+masonry.js写瀑布流

bootstrap+masonry.js写瀑布流

最近在用bootstrap写一个网站,其中有个图文展示的页面要用到瀑布流的效果。
因为项目要求,项目要以bootstrap为基准,不准私自添加内联样式、内部样式,所以,自己写瀑布流就不行了,所以,根据要求,百度查找相关资料,看到masonry.js.
个人认为这是一个非常好用的瀑布流插件。
下面说一下我在引用的过程中遇到的问题,一开始我用bootstrap栅格系统布局,代码如下


<div class="row masonry">


<div class="col-xs-12 col-sm-6 col-md-6 item">
<div class="thumbnail">
图文展示
</div>
</div>


<div class="col-xs-12 col-sm-6 col-md-6 item">
<div class="thumbnail">
<div>
图文展示
</div>
</div>


..........(省略n多图文展示)


</div>


引入masonry.js


<script type="text/JavaScript" src="http://www.mamicode.com/js/jQuery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://www.mamicode.com/js/bootstrap.min.js" ></script>
<script type="text/javascript" src="http://www.mamicode.com/js/masonry.pkgd.min.js" ></script>
<!--瀑布流-->
<script>
$(‘.masonry‘).masonry({
itemSelector: ‘.item‘
});
</script>


本以为会有一个满意的结果,但是,万万没想到,万万没想到,图文展示错乱,重叠..这里我就不上图了,太渣。
后来对照masonry.js的相关文档看了一下,才知道,还要引入imagesLoaded.js。
因为图片没有加载出来时,会影响它的布局,导致瀑布流布局错误。我是这样理解的。如果理解错了,各位使劲吐槽我。
所以,最后再引入imagesLoaded.js


<script type="text/javascript" src="http://www.mamicode.com/js/imagesloaded.pkgd.min.js" ></script>


最终调整代码为:


<script type="text/javascript" src="http://www.mamicode.com/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://www.mamicode.com/js/bootstrap.min.js" ></script>
<script type="text/javascript" src="http://www.mamicode.com/js/masonry.pkgd.min.js" ></script>
<script type="text/javascript" src="http://www.mamicode.com/js/imagesloaded.pkgd.min.js" ></script>
<!--瀑布流-->
<script>
<span style="white-space:pre"> </span>$(‘.masonry‘).imagesLoaded(function() {
$(‘.masonry‘).masonry({
itemSelector: ‘.item‘
});
});
</script>


最后,结果完美。

bootstrap+masonry.js写瀑布流