【发布时间】:2012-06-28 11:35:22
【问题描述】:
对你来说有点谜......
我有一个 730 像素宽的自动高度 div。在这里面我有一些较小的 div 164px X 261px。
这些将被动态拉入模板,因此我可以有 1 个,或者我可以有 18 个,或者为了这个练习,我可以有 1000 个或介于两者之间的任何值。
我需要将它们分开,以便在每一行上,每行之间的距离相等。很简单,如果我们最多处理 4 个,我可以这样做:
var totalWidth = $('.bigDiv .smallerDivs').length * $('.bigDiv .smallerDivs').width();
var margin = ($('.bigDiv').width - totalWidth) / ($('.bigDiv .smallerDivs').length * 2);
$('.bigDiv .smallerDivs').css('margin-left': margin , 'margin-right': margin);
但是,当有 5 个时。我希望顶行有 3 个,底部有 2 个。或者如果我有 7 个,我希望 4 在顶部 3 在底部。如果有 11 个,我希望顶部有 4 个,中间有 4 个,下面有 3 个等等等等,根据有多少小盒子,每一行都很好地证明了这一点。
任何人都可以建议我可以解决这个问题的好方法吗?
【问题讨论】:
-
如果所有 div 的宽度相同,则每行不可能有超过 4 个
730/164 ~ 4...我猜你想均匀分布它们,但不要改变子 div 的实际大小?你也许可以只用 CSS 来做到这一点 -
如果我正确理解您的要求,我已经写了详细的答案:stackoverflow.com/questions/10548417/…
-
没错。因此,当我有超过 4 个 div 时需要更多行
-
@thirtydot 这是一个不错的解决方案,但是我需要能够更灵活地分隔它们。理想的匹配是每行 4 个,但是如果我有 5 个 div,我需要能够将 3 个放在顶行,2 个放在底部。全部均匀分布(为了稍微简化,底部 2 之间的边距与顶部 3 之间的边距相同,但它们会居中)
-
@Fraser:一些关于不同数量元素应该发生什么的示例图像将非常有用。