我正在尝试使用循环(从xml获取数据)为多个项目创建javascript图库。每个项目至少3张图像,排成两行。
我已经为4张看起来正确的图片(下图)创建了html,但是我很难将其转化为灵活的内容。
<div class="project">
<div class="projectImage" id="projectImage" style="float: left;"><img src="image1.png"></div>
<div class="projectImage" id="projectImage" style="float: left; padding-left: 20px;"><img src="image2.png"></div>
我感到困惑。我是否需要循环内部的循环来处理只需要生成一次的代码块,我还可以如何遍历4个以上的项目并将图像名称分组为上述两个?
答案 0 :(得分:0)
最好设置margin-right。
<style>
.project {
width: 200px;
}
.projectImage {
float:left;
margin-right: 20px;
}
</style>
...
<body>
<div class="project">
<div class="projectImage" id="img1"><img src="image1.png"></div>
<div class="projectImage" id="img2"><img src="image2.png"></div>
<div class="projectImage" id="img3"><img src="image3.png"></div>
<div class="projectImage" id="img4"><img src="image4.png"></div>
<div class="projectImage" id="img5"><img src="image5.png"></div>
根据.project的宽度,它将是灵活的。
http://jsfiddle.net/bzykh/(一堆带有700宽容器的Google徽标)
http://jsfiddle.net/bzykh/1/(一堆带有400宽容器的Google徽标)
答案 1 :(得分:0)
我建议将您的问题分开,以一种可以理解和灵活的方式解决这个问题。
<强> JSFiddle example 强>
<强>模板:强>
<script id="gallery-template" type="text/x-handlebars-template">
{{#each projects}}
<div class="project">
<h1>{{title}}</h1>
<ul>
{{#each images}}
<li><img src="{{this}}"></li>
{{/each}}
</ul>
</div>
{{/each}}
</script>
<强>使用Javascript:强>
var gallery = {
projects: [
{
title: 'Gallery 1',
images: ['http://placekitten.com/100/100', 'http://placekitten.com/100/100', 'http://placekitten.com/100/100', 'http://placekitten.com/100/100']
},
{
title: 'Gallery 2',
images: ['http://placekitten.com/100/100']
}
]
};
var source = $("#gallery-template").html();
var template = Handlebars.compile(source);
var html = template(gallery);
$(document.body).html(html);
<强> CSS:强>
.project ul { overflow: hidden; }
.project ul li { float: left; }
/* break into rows of 2 */
.project ul li:nth-child(odd) { clear: both; }
编辑:我意识到这个答案可能贡献太多,但你确实在javascript标签上问过它,而不是css:)
答案 2 :(得分:0)
我建议您在需要非常灵活的网格设计时查看砌体jquery插件或wookmark jquery插件。首先,这是一个非常新的和有趣的jquery扩展,第二个它们还实现了1d bin-packing算法,因此它们在列中堆叠框,每列目标最大框。这是自动的。起初可能很难学习和使用过度,但是当你熟悉它时,它可以使网格布局变得非常容易。