我使用Isotope插件来过滤我的产品列表。我也使用Bootstrap 3作为总体布局,页面应该是响应式的,所以列宽是基于百分比的。我想要等高的缩略图图像和相等的宽度,一个简单的网格。首先,我尝试了“fitRows”布局模式,但是我遇到了错误的列数显示问题(在所有浏览器中),并发现Cubica在https://github.com/cubica/isotope-sloppy-masonry发布的额外布局行为“Sloppy Masonry” - 这样可以解决列宽问题一个响应式网格。为了解决相同的高度,我做了一个简单的JS来设置所有高度以适应最高的项目。Chrome中的高度问题与jQuery的同位素响应布局与Bootstrap 3
我的问题:在Chrome中,存在缩略图高度出错,太小而内容被切断的问题。(请注意,问题是我的resizeboxes()
函数没有注意到。)
(非)有趣的事情是它不会每次都发生。另外,当我调整Chrome窗口的大小时,布局正确...
我读到Isotope v2(现在测试版)会更好地处理响应式布局,但我无法让它工作得更好。现在我已经尝试了很多不同的技巧,但是我无法按照自己的想法得到它。目前的代码适用于除Chrome之外的所有主流浏览器...帮助表示赞赏!
这是我目前(略简体)代码:
<div class="row" id="listing">
<?php foreach ($products as $p): ?>
<div class="col-md-3 list">
<img src="<?=$p->image_file?>" class="img-responsive" />
<h4><?=$p->title?></h4>
</div>
<?php endforeach; ?>
</div>
JS功能,使高度相等的:
function resizeBoxes()
{
var h = 0;
$('div.view').each(function()
{
var b = $(this);
if (h < b.height()) h = b.height();
});
$('div.view').height(h);
}
和init同位素功能:
var $container = $('#listing');
function initIsotope()
{
$container.isotope({
layoutMode: 'sloppyMasonry',
});
}
$(window).resize(function() {
resizeBoxes();
initIsotope();
});
$(document).ready(function() {
resizeBoxes();
initIsotope();
});