这是一个使用 jQuery 的简单解决方案。该脚本将尝试在不溢出的情况下填充尽可能多的网格元素。该函数接受一个参数,该参数定义了网格的大小。
function createGrid(size) {
var ratioW = Math.floor($(window).width()/size),
ratioH = Math.floor($(window).height()/size);
var parent = $('<div />', {
class: 'grid',
width: ratioW * size,
height: ratioH * size
}).addClass('grid').appendTo('body');
for (var i = 0; i < ratioH; i++) {
for(var p = 0; p < ratioW; p++){
$('<div />', {
width: size - 1,
height: size - 1
}).appendTo(parent);
}
}
}
它还需要一个简单的 CSS 样式:
.grid {
border: 1px solid #ccc;
border-width: 1px 0 0 1px;
}
.grid div {
border: 1px solid #ccc;
border-width: 0 1px 1px 0;
float: left;
}
在这里查看一个简单的演示:http://jsfiddle.net/yijiang/nsYyc/1/
这是一个使用原生 DOM 函数的例子。我还应该更改初始比率计算以使用 DOM 函数,但我无法终生让 window.innerWidth 返回准确的数字 修复:
function createGrid(size) {
var ratioW = Math.floor((window.innerWidth || document.documentElement.offsetWidth) / size),
ratioH = Math.floor((window.innerHeight || document.documentElement.offsetHeight) / size);
var parent = document.createElement('div');
parent.className = 'grid';
parent.style.width = (ratioW * size) + 'px';
parent.style.height = (ratioH * size) + 'px';
for (var i = 0; i < ratioH; i++) {
for (var p = 0; p < ratioW; p++) {
var cell = document.createElement('div');
cell.style.height = (size - 1) + 'px';
cell.style.width = (size - 1) + 'px';
parent.appendChild(cell);
}
}
document.body.appendChild(parent);
}
createGrid(10);
它基本上是 jQuery 代码的直接翻译。如果您需要更高的性能,您可以切换到使用推送到数组的字符串来生成框:
arr.push('<div style="width:', (size - 1), 'px;height:', (size - 1), 'px;"></div>');
然后在最后
parent.innerHTML = arr.join('');