看起来只有Chrome和Safari才会出现这种情况,而Firefox不会。我使用的是基础响应框架,所以我不知道该怎么设置高度。而且Chrome/Safari中的图片之间似乎没有足够的间距。
我该如何解决这个问题?
编辑:这里是一个小提琴http://jsfiddle.net/TLjay/
它的问题是,它似乎没有显示的问题,我有..所以我不知道该怎么办..我已经尝试禁用一切,但同位素..所有jquery/css和它仍然缩小图像在Chrome/Safari,但它的罚款在火狐。
此外,如果我点击“所有”下的过滤器,它拉伸页面,以如何它的假设看起来,这样可能有助于弄清楚这一点
我让它与imagesLoaded一起工作,所以它给了足够的空间,但图像的左边和右边的空间仍然不在它应该在的地方。我的脚本如下
<script type="text/javascript">
var $container = $('.isosort')
// initialize Isotope
$container.isotope({
// options...
resizable: false, // disable normal resizing
layoutMode : 'fitRows',
animationEngine : 'best-available',
// set columnWidth to a percentage of container width
masonry: { columnWidth: $container.width() / 5 }
});
// update columnWidth on window resize
$(window).smartresize(function(){
$container.isotope({
// update columnWidth to a percentage of container width
masonry: { columnWidth: $container.width() / 5 }
});
});
$container.imagesLoaded( function(){
$container.isotope({
// options...
});
});
$('#filters a').click(function(){
var selector = $(this).attr('data-filter');
$container.isotope({ filter: selector });
return false;
});
</script>
5条答案
按热度按时间1aaf6o9v1#
更新(* 原始答案错误,因为浏览器使用了缓存图像..*)
问题似乎是图像未加载,计算失败。
如果您将isotop代码 Package 在
$(window).load(function(){ ..... });
中,它似乎可以按预期工作。请参阅http://jsfiddle.net/TLjay/2/
不知道为什么会发生这种情况,但一个简单的解决办法是(* 因为一旦调整窗口大小,它就会得到修复 *)手动调用
resize
。因此只需在代码末尾添加
$(window).resize();
即可修复它。在http://jsfiddle.net/TLjay/1/上演示
ljsrvy3e2#
imagesLoaded的工作原理是检查当前包含元素中的图像。所以在您的例子中,它实际上并没有在$(window).load()中做任何事情,因为该元素中没有任何项。相反,我建议在用$. AJAX .success插入项后再次触发imagesLoaded
eoigrqb63#
如果您有可用的图像尺寸,则可以使用SVG占位符来解决此问题。
例如:使用图元素并使用“position:绝对”。
这样,isotope使用SVG渲染网格元素,SVG占据空间并将img放在其上。
neekobn84#
在调用同位素方法之前,您应该确保预加载所有图像,以下是该方法的真实的演示:http://gbin1.com/gb/demoviewer/360/06242ba0-40a1-45fd-946f-cc89e0df64c9/index.html.htm,您使用jquery.imagesloaded.min.js插件预加载图像,然后调用isotope,内容不会重叠。
qv7cva1a5#
这里有同位素重叠的解决方案。也为同位素过滤器与搜索和加载更多的代码。
该代码在WEBFLOW中也能正常工作