好的,一天后我可以很简单地做到这一点......
制作网格的关键是简单的 CSS 定位。
确保父容器 ( #grid
)position:relative;
和所有使用的网格框position:absolute
,并且top:;left:;
我能够根据它们的 JSON 属性准确地定位网格中的项目。
item
对于我收到的 JSON 数组中的每个网格,我通过为它们提供预编程的 css 类来设置它们的高度、宽度、行和列:
.item .widthx1 { width: 85px !important; }
.item .widthx2 { width: 180px !important; }
.item .heighty1 { height: 85px !important; }
.item .heighty2 { height: 180px !important; }
.item .col1 { left:10px !important; }
.item .col2 { left:105px !important; }
.item .col3 { left:200px !important; }
.item .col4 { left:295px !important; }
.item .row1 { top:10px !important; }
.item .row2 { top:105px !important; }
.item .row3 { top:200px !important; }
.item .row4 { top:295px !important; }
注意 -我的 CSS 行上升到.row24
因为我没有预料到比这更多的行。如果你有更多的行,你总是可以编写一些 javascript 来计算top
属性,方法是将行数乘以每个网格对象的高度尺寸。列和left
属性也是如此。只需将数字列乘以网格对象的宽度尺寸即可。然后,您可以将top
andleft
属性注入到对象上的一个简单style
标记中。
由于我的 JSON 数组中的每个项目对象看起来像这样,指定列、行、x 宽度和 y 高度:
c: 1
r: 3
x: 1
y: 1
我遍历了每个项目并附加了看起来像这样的 HTML,哇哦!
$(itemsArray).each(function(index, item) {
var itemHtml = "<div class='item widthx" + item.x + " heighty" + item.y + " row" + item.r + " " + "col" + item.c + "'>" + image + "</div>"
$('#grid').append(itemHtml)
});