【问题标题】:jquery masonry: nth-child() adds unneeded margin to child nodesjquery masonry:nth-​​child() 向子节点添加不需要的边距
【发布时间】:2011-03-08 21:31:00
【问题描述】:

我正在尝试使用很棒的 jquery masonry 插件 -> http://desandro.com/resources/jquery-masonry/

插件工作得很好,但是我在创建布局时遇到了问题,我使用 nth-child() 选择器来消除每隔三个元素的边距。

#footerwidgets li.widget {
    margin: 0px 24px 24px 0px;
    width:340px;
}

#footerwidgets li.widget:nth-child(3n) {
  margin-right:0px;
}

因为我的这个小部件的容器正好是 1068 像素宽,所以三个小​​部件完全适合(因为最后一个小部件没有右边距)。

当我尝试使用 jquery masonry 插件时,此行为会被忽略!只有两列适合。(该插件有效,因此所有小部件都以砖石风格浮动。)当我检查元素时,每三个元素的右边距也为 24px。所以 nth-child 被忽略了。

有什么方法可以让它工作吗?

【问题讨论】:

  • 你在什么浏览器上测试过这个? nth-child 选择器是 CSS 3,因此支持仍然有限。 Internet Explorer 直到版本 9 才支持它。
  • 我正在使用 chrome 和/或 safari

标签: jquery jquery-masonry


【解决方案1】:

使用 jQuery,删除边距并使用 Masonry's gutterWidth option 代替它。

CSS:

#footerwidgets li.widget.masonry-brick { margin: 0; }

jQuery:

$('#footerwidgets').masonry({
  gutterWidth: 24
});

【讨论】:

    【解决方案2】:

    砌体不适用于可变大小的边距。您有三列和一个 528px 的容器。您最好的选择是使用三列 176 像素。每列的边距为 12 像素,宽度为 152 像素。

    如果您希望总宽度减去左右边距为 528 像素,则将容器扩展为 544 像素(528 像素 + 2 x 12 像素),并将列的宽度扩展为 160。

    【讨论】:

    • sry,逗号不是问题,这只是发布这个问题时发生的一个小错误......问题是我希望三个小部件水平适合我的#wrapper div(1068px宽的)。每个小部件的宽度为 340 像素,边距为 24 像素。每三个小部件的右边距设置为 0;这意味着 340+24+340+24+340 = 1068。当我不使用砖石时,这很好用。但是,当我使用 masonry 时,所有小部件都有 24px 的右边距,因此每隔三个元素也会向左浮动 -> 所以只有两列小部件适合我的包装器。
    • 是的,你理解我的正确。我的第三个小部件向左浮动。但是我希望它在其他两个小部件之外向右浮动到顶部。
    • 您能否发布指向您的 HTML 的链接,这将有助于我更好地回答您的问题。使用类似 pastebin 的东西
    • 这是我的问题:jsfiddle.net/DfpXe 取消注释 javascript 行并查看。实际上三根柱子可以装进去,但是砖石只能装两根。
    猜你喜欢
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多