jQuery 砌体物品堆叠顺序错误
jQuery Masonry items stacking in wrong order
很难描述,但 this codepen 应该有助于说明问题。
根据我的设置,物品的堆叠顺序很明显是错误的。
大多数项目的宽度为 33%,但我在顶部有一些 50% 宽度的项目。我首先使用 spacer 项来定义正确的尺寸。
出于某种原因,这 50% 的物品被堆叠在一起,而显然它们并排放置的空间非常明显。即使我将它们的宽度减小到 45%,它也会这样做 - 那里肯定 space 让它们并排坐着。
这似乎是 Masonry 的一个实际错误,我已经记录了他们的问题,但没有收到任何回复。谁能看出为什么这不起作用?或者提供修复?或者知道解决方法?谢谢!
供参考,这里是代码:
<div class="grid">
<div class="grid-item grid-item--sizer"></div>
<div class="grid-item grid-item--width2">1</div>
<div class="grid-item grid-item--width2">2</div>
<div class="grid-item grid-item--width2">3</div>
<div class="grid-item">4</div>
<div class="grid-item">5</div>
<div class="grid-item">6</div>
<div class="grid-item">7</div>
<div class="grid-item">8</div>
<div class="grid-item">9</div>
<div class="grid-item">10</div>
<div class="grid-item">11</div>
<div class="grid-item">12</div>
</div>
CSS:
* {
box-sizing: border-box;
}
.grid {
background: #EEE;
max-width: 480px;
margin:0 auto;
}
.grid-item {
width: 160px;
height: 120px;
float: left;
}
.grid-item--sizer {
height: 0;
}
.grid-item--width2 {
width: 240px;
}
JS:
$('.grid').masonry({
itemSelector: '.grid-item'
});
我认为 Masonry 布局基于 columnWidth
参数,所有网格元素的宽度都应该是 columnWidth
的倍数。在您的情况下,这意味着有 80 像素的基列。
删除您的 sizer 元素(不需要它),并将您的砌体调用更改为:
$('.grid').masonry({
itemSelector: '.grid-item',
columnWidth: 80
});
很难描述,但 this codepen 应该有助于说明问题。
根据我的设置,物品的堆叠顺序很明显是错误的。
大多数项目的宽度为 33%,但我在顶部有一些 50% 宽度的项目。我首先使用 spacer 项来定义正确的尺寸。
出于某种原因,这 50% 的物品被堆叠在一起,而显然它们并排放置的空间非常明显。即使我将它们的宽度减小到 45%,它也会这样做 - 那里肯定 space 让它们并排坐着。
这似乎是 Masonry 的一个实际错误,我已经记录了他们的问题,但没有收到任何回复。谁能看出为什么这不起作用?或者提供修复?或者知道解决方法?谢谢!
供参考,这里是代码:
<div class="grid">
<div class="grid-item grid-item--sizer"></div>
<div class="grid-item grid-item--width2">1</div>
<div class="grid-item grid-item--width2">2</div>
<div class="grid-item grid-item--width2">3</div>
<div class="grid-item">4</div>
<div class="grid-item">5</div>
<div class="grid-item">6</div>
<div class="grid-item">7</div>
<div class="grid-item">8</div>
<div class="grid-item">9</div>
<div class="grid-item">10</div>
<div class="grid-item">11</div>
<div class="grid-item">12</div>
</div>
CSS:
* {
box-sizing: border-box;
}
.grid {
background: #EEE;
max-width: 480px;
margin:0 auto;
}
.grid-item {
width: 160px;
height: 120px;
float: left;
}
.grid-item--sizer {
height: 0;
}
.grid-item--width2 {
width: 240px;
}
JS:
$('.grid').masonry({
itemSelector: '.grid-item'
});
我认为 Masonry 布局基于 columnWidth
参数,所有网格元素的宽度都应该是 columnWidth
的倍数。在您的情况下,这意味着有 80 像素的基列。
删除您的 sizer 元素(不需要它),并将您的砌体调用更改为:
$('.grid').masonry({
itemSelector: '.grid-item',
columnWidth: 80
});