I would suggest that you use grid layout for such implementation:
nrCards = 12;
var card = document.querySelectorAll(".card");
var cards = generateRandomCard(nrCards);
var startBtn = document.querySelector("#start");
function generateRandomCard(num) {
var arr = [];
for (var i = 0; i < num; i++) {
arr.push(randomCard());
}
}
function randomCard() {
var result = '';
var letters = "CDHS";
var number = Math.floor((Math.random() * 9) + 2);
var letter = letters[Math.floor(Math.random() * 4)];
result += "PNG/" + number + letter + ".png";
return result;
}
startBtn.addEventListener("click", function () {
for (var i = 0; i < nrCards; i++) {
card[i].src = randomCard();
//card[i].src ="PNG/8S.png";
//console.log(card[i]);
}
//console.log("----------------------");
})
body{
background-color:#13060d;
margin:0;
font-family: 'Gotu', sans-serif;
}
#container{
margin-top: 15%;
max-width: 1000px;
margin:20px 50px;
display: grid;
grid-template-columns: auto auto auto auto;
grid-column-gap: 50px;
grid-row-gap: 50px;
}
img{
width:auto;
background:purple;
border-radius: 10%;
}
h1{
color:white;
margin-bottom:0;
}
#start{
border-style: none;
font-size:2rem;
}
<!DOCTYPE html>
<html>
<head>
<title>Matching Cards Game</title>
<link rel="stylesheet" type="text/css" href="style.css">
<link href="https://fonts.googleapis.com/css2?family=Gotu&display=swap" rel="stylesheet">
</head>
<body>
<h1 id="gameTitle">The Card Matching Game</h1>
<div id="container">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
<img class="card" src="">
</div>
<button id="start">Start Game</button>
<script type="text/javascript" src="code.js"></script>
</body>
</html>