Oto proste rozwiązanie z wykorzystaniem jQuery. Ten skrypt spróbuje wypełnić jak najwięcej elementów siatki bez przepełnienia. Funkcja akceptuje pojedynczy parametr określający rozmiar siatki.
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);
}
}
}
Wymaga to również prosty styl 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;
}
Zobacz proste demo tutaj: http://jsfiddle.net/yijiang/nsYyc/1/
Oto jeden za pomocą natywnych funkcji DOM. Należy również zmienić początkowe obliczenia stosunku do używania funkcji DOM ale nie mogę dla życia mnie dostać window.innerWidth
wrócić dokładnych liczb ustalone, że:
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);
Jest to w zasadzie bezpośrednie tłumaczenie kodu jQuery. Jeśli potrzebujesz jeszcze bardziej wydajność można przełączyć do generowania pola za pomocą strun popychany do tablicy:
arr.push('<div style="width:', (size - 1), 'px;height:', (size - 1), 'px;"></div>');
następnie pod koniec
parent.innerHTML = arr.join('');
możliwy duplikat [Jak zrobić siatkę (jak siatka z papieru graficznego) za pomocą tylko css?] (Http://stackoverflow.com/questions/3540194/how-to-make-a-grid-like-graph-paper -grid-with-just-css) –
Idealne rozwiązanie w moim przypadku nie wymaga żadnych obrazów, ponieważ muszę dynamicznie skalować siatkę i wypełniać bloki różnymi kolorami. Mógłbym sobie z tym poradzić z różnymi typami obrazów, ale to byłoby dość włochate. – lennysan