JSFiddle: https://jsfiddle.net/Leyz1jgw/
Решение использует абсолютное позиционирование <div>
.
Сначала я определил функцию gen
, которая создает квадрат 35 на 35, в позиции (left
, top
) (верхний левый угол) и с цветом фона color
.
function gen(color, left, top) {
let redSq = document.createElement("div"); // my Div
redSq.style.position = 'absolute';
redSq.style.backgroundColor = color;
redSq.style.width = "35px" ; // width
redSq.style.height = "35px" ; // height
redSq.style.left = left + 'px';
redSq.style.top = top + 'px';
document.body.appendChild(redSq);
}
Затем цикл выглядит следующим образом: i
определяет количество строк, j
количество столбцов.
Квадрат в i
-й строке (i
отсчитывается от 0) будет иметь i
строку над ним.
Итак, он должен быть в позиции 5 + i * (35 + 5)
сверху, поскольку квадрат имеет сторону 35 пикселей, а зазор должен составлять 5 пикселей (включая начальный зазор).
Примените аналогичный лог. c для горизонтального расположения квадратов.
Теперь о раскраске: обратите внимание, что для двух последовательных (горизонтальных или вертикальных) квадратов цвета должны быть разными, и по совпадению сумма i + j
также соответственно меняет четность. Итак, раскрасьте квадрат в зависимости от того, является ли сумма четной или нечетной.
Вот пример цикла:
for(i = 0; i < 12 ; i++){ //rows
for(j = 0; j < 5; j++){ //columns
let left = 5 + (j * 40); //positioning
let top = 5 + (i * 40);
if((i + j) % 2 == 0) { //coloring
gen('black', left, top);
} else {
gen('red', left, top);
}
}
}