javascript - 如何从循环 jQuery 创建砌体布局
问题描述
我正在尝试使用循环动态创建砌体布局,但我被卡住了。
我想要这样的东西:
但我不能出于某种原因。
js:
var areaList = [
{ name: "name", color: "#f3d33a", width: 440, height: 260 },
{ name: "", color: "green", width: 240, height: 260 },
{ name: "name", color: "green", width: 240, height: 260 },
{ name: "", color: "green", width: 240, height: 260 },
{ name: "", color: "green", width: 240, height: 260 },
{ name: "", color: "green", width: 440, height: 260 },
{ name: "", color: "#f3d33a", width: 440, height: 200 },
{ name: "", color: "blue", width: 240, height: 200 },
{ name: "name", color: "blue", width: 260, height: 200 },
{ name: "", color: "blue", width: 150, height: 200 },
{ name: "", color: "blue", width: 310, height: 200 },
{ name: "", color: "blue", width: 440, height: 200 },
{ name: "", color: "#f3d33a", width: 440, height: 340 },
{ name: "", color: "orange", width: 240, height: 340 },
{ name: "name", color: "orange", width: 240, height: 340 },
{ name: "", color: "orange", width: 240, height: 340 },
{ name: "", color: "orange", width: 240, height: 340 },
{ name: "", color: "orange", width: 440, height: 340 },
]
function createAreas() {
$(areaList).each(function (i, data) {
if (data.name != "") {
var objects = `<div class="grid-item" id="box${i}">
<div class="zone-name">${data.name}</div>
</div>`
} else {
var objects = `<div class="grid-item" id="box${i}"></div>`
}
$(".grid").append(objects);
splitAreas(data.color, data.width, data.height,i)
});
}
function splitAreas(color, width, height, id) {
console.log(color, width, height)
$('#box' + id + '').css("background-color", color)
$('#box' + id + '').css("width", width + "px")
$('#box' + id + '').css("height", height + "px")
}
createAreas()
HTML:
<div class="grid"></div>
CSS:
.grid {
width: 100%;
}
.grid-item {
margin-left: 11px;
margin-bottom: 11px;
float: left;
border-radius: 10px;
}
如何使用我目前使用的相同原理分割区域,如图片中的区域?
解决方案
var areaList = [
{ name: "name", color: "#f3d33a", width: 440, height: 260 },
{ name: "", color: "green", width: 240, height: 260 },
{ name: "name", color: "green", width: 240, height: 260 },
{ name: "", color: "green", width: 240, height: 260 },
{ name: "", color: "green", width: 240, height: 260 },
{ name: "", color: "green", width: 440, height: 260 },
{ name: "", color: "#f3d33a", width: 440, height: 200 },
{ name: "", color: "blue", width: 240, height: 200 },
{ name: "name", color: "blue", width: 260, height: 200 },
{ name: "", color: "blue", width: 150, height: 200 },
{ name: "", color: "blue", width: 310, height: 200 },
{ name: "", color: "blue", width: 440, height: 200 },
{ name: "", color: "#f3d33a", width: 440, height: 340 },
{ name: "", color: "orange", width: 240, height: 340 },
{ name: "name", color: "orange", width: 240, height: 340 },
{ name: "", color: "orange", width: 240, height: 340 },
{ name: "", color: "orange", width: 240, height: 340 },
{ name: "", color: "orange", width: 440, height: 340 },
]
function createAreas() {
var grid = $(".grid")
$(areaList).each(function (i, data) {
var style = `background-color:${data.color}; width:${data.width}px; height:${data.height}px`
var name = data.name != "" ? `<div class="zone-name">${data.name}</div>` : ''
grid.append(`<div class="grid-item" id="box${i}" style="${style}">${name}</div>`);
});
}
createAreas()
.grid {
width: 100%;
}
.grid-item {
margin-left: 11px;
margin-bottom: 11px;
float: left;
border-radius: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div class="grid"></div>
推荐阅读
- python-3.x - Gtk 进度条颜色
- html - 按列编辑表格
- php - if else 语句 js 嵌套在 php while 循环语句中 - 结果出现在循环之外/不显示
- python - ' TypeError: argument 1 must be pygame.Surface, not list ' : 不理解
- wpf - WPF 和 WinForm SerialPort 控制通过 RS232 的区别?
- math - 用 BCD 做 198-43
- javascript - 我如何知道输入的电子邮件是否对 jquery 有价值?
- python - 如何存储字符串的最后 n 个字符以连接到 Python 中的用户输入?
- java - 返回两个 int[][] 数组并且没有得到 java.lang.ArrayIndexOutOfBoundsException 的技术:-1 错误
- php - PHP生成带有条件的随机数数组