Я играю в память, используя обычный js и css-grid.Я видел решение с flex-box, но я хочу сделать это с помощью css-grid.Проблема, с которой я столкнулся сейчас, заключается в размещении элементов сетки в контейнере сетки с использованием JavaScript.Я знаю, как сделать это в CSS, но не смог сделать это с JS.До сих пор я безуспешно пробовал следующее:
const fillGrid = () => {
let i = 1;
document.getElementsByClassName('grid-item').forEach(element => {
element.style.gridArea = `block${i++}`;
document.getElementById('grid').appendChild(element);
});
}
fillGrid();
Мое намерение состояло в том, чтобы назначить свойства 'grid-area' для каждого элемента grid в javascript, сохраняя при этом остальные свойства css-grid вчасть css.Я хотел использовать javascript, потому что я хочу динамически изменять положение каждого элемента.
HTML:
<div class="grid-container" id="grid">
<div class="grid-item">
<img src="img/2.jpg" class="frot-face"/>
</div>
<div class="grid-item">
<img src="img/1.jpg" class="frot-face"/>
</div>
<div class="grid-item">
<img src="img/3.jpg" class="frot-face"/>
</div>
<div class="grid-item">
<img src="img/5.jpg" class="frot-face"/>
</div>
<div class="grid-item">
<img src="img/6.jpg" class="frot-face"/>
</div>
<div class="grid-item">
<img src="img/7.jpg" class="frot-face"/>
</div>
<div class="grid-item">
<img src="img/8.jpg" class="frot-face"/>
</div>
<div class="grid-item">
<img src="img/9.jpg" class="frot-face"/>
</div>
</div>
CSS:
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr;
grid-template-areas: 'block1 block2 block3 block4' 'block5 block6 block7 block8' 'block1 block2 block3 block4' 'block5 block6 block7 block8';
padding: 3em 2em 3em 2em;
grid-gap: 1em;
width: 73vmin;
margin: auto;
border-radius: 10px;
}