Я создаю сетку квадратных divs, которая начинается как 16x16. Однако эту сетку можно изменить, чтобы она была больше или меньше (40x40, 10x10, 60x60 и т. Д.), Нажав кнопку на странице и заполнив приглашение.Размер div высота динамически основано на количестве divs
Когда пользователь меняет размер сетки, я бы хотел, чтобы новая сетка занимала то же место, что и исходная сетка 16x16. Я использую «vw» для определения ширины div, которая, кажется, работает правильно (они динамически реагируют, чтобы соответствовать исходному размеру сетки). Однако высота каждого div, кажется, не отвечает должным образом, когда я использую 'vh', и divs выходят за пределы контейнера div.
Вот HTML:
<! DOCTYPE html>
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<script src="grid.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="grid.css">
<title>The Grid</title>
</head>
<body>
<button type="button">Click Me!</button>
<div class="grid">
</div>
</body>
</html>
Вот CSS:
body {
background: #000;
}
.square {
background-color: white;
display: table-cell;
border: 1px solid black;
width: 100vw;
height: 7.75vh;
}
.highlighted {
background-color: #0000FF;
}
Вот JavaScript:
$(document).ready(function() {
var $grid = $('.grid');
for (var i = 0; i < 16; i++) {
var row = '<div>';
for (var j = 0; j < 16; j++)
row += '<div class = "square"></div>';
row += '</div>';
$grid.append(row);
}
$('button').on('click', function() {
$('.square').detach();
var gridPrompt = prompt('How many squares per side would you like to make the current grid?');
var $grid = $('.grid');
for (var i = 0; i < gridPrompt; i++) {
var row = '<div>';
for (var j = 0; j < gridPrompt; j++)
row += '<div class = "square"></div>';
row += '</div>';
$grid.append(row);
console.log(gridPrompt);
}
var newColor = ('#'+Math.floor(Math.random()*16777215).toString(16));
$('.square').on('mouseenter', function() {
$(this).css({'background-color': newColor});
});
});
var newColor = ('#'+Math.floor(Math.random()*16777215).toString(16));
$('.square').on('mouseenter', function() {
$(this).css({'background-color': newColor});
});
});
Ваша проблема связана с CSS, но почти невозможно исправить ошибку, так как ваш html динамически генерируется. Я предлагаю вам создать скрипку с 2 или 3 различными сгенерированными HTML-надписями, которые демонстрируют проблему и позволяют возиться. Я не уверен, что ваша магия jQuery создает HTML-код, который вам действительно нужен (например, для n <16 он генерирует много пустых элементов div). – connexo