对不起我的英语。
有很多天我试图找出一个问题,我试图创建一个响应全宽的图像网格。要创建此网格,我使用Isotope和Masonry Layout(http://isotope.metafizzy.co/)或Packery(http://packery.metafizzy.co/layout.html)。我已经尝试过两者并且两者都有同样的问题。对于我的浏览器的某些分辨率,我看到图像之间有1px的间隙(如下图所示)。
我在很多帖子中都读过这个问题(例如https://github.com/metafizzy/packery/issues/42),但没有解决方案适合我。有人可以帮帮我吗?
目前我的代码是:
jQuery(window).load(function() {
var container = document.querySelector('.grid');
var pckry;
// using imagesLoaded http://desandro.github.io/imagesloaded
imagesLoaded( container, function() {
pckry = new Packery( container, {
itemSelector: '.grid-item',
rowHeight: '.grid-sizer',
percentPosition: true
});
});
});
我附上了我想要的最终网格:
答案 0 :(得分:4)
经过多天的工作,我已经能够解决我的问题了,感谢插件的作者DeSando。
正如他在这篇文章http://metafizzy.co/blog/beyonce-seamless-fluid-image-masonry中解释的那样,由于JavaScript和CSS之间的像素舍入差异而出现差距。
在我的情况下,我有一个基于四列的网格,当浏览器的宽度不能每4分割时,差距就会消失。因此,正如DeSandro建议here,一种解决方法是将图像容器设置得更小一些,并将图像的间隙覆盖得更大一些。所以,在我的网站上:
HTML
<div class="grid">
<div class="grid-item" ><a href="#"><img src="..." title="" class="lazy"></a></div>
<div class="grid-item grid-item--width2 " ><a href=#"><img src="..." title="" class="lazy"></a></div>
<div class="grid-item grid-item--width2 "><a href="#"><img src="..." title="" class="lazy"></a></div>
<div class="grid-item" ><a href="#"><img src="..." title="" class="lazy"></a></div>
<div class="grid-item" ><a href="#"><img src="..." title="" class="lazy"></a></div>
...
</div>
CSS
.grid {
margin: 0 auto;
width: 100.4%;
margin-bottom: 0px !important;
}
.grid-sizer,.grid-item {
width: 24.9%;
display: block;
float: left;
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
list-style: none!important;
}
/* 2 columns wide */
.grid-item--width2 {
width: 49.8%;
display: block;
float: left;
}
.grid-item img{
display:block;
width: 100.4%;
max-width: 100.4% !important;
}
JS
// init Packery
var grid = jQuery('.grid').packery({
itemSelector: '.grid-item',
percentPosition: true
});
// layout Packery after each image loads
grid.imagesLoaded().progress( function() {
grid.packery();
});
对不起我的英语。我希望这对我们许多人都有用。