I have made this simple example of my current grid setup:
document.querySelectorAll(".element").forEach(box =>
box.addEventListener("click", () => box.classList.toggle("compressed"))
)
.container{
display:grid;
grid-template-columns: repeat(3, min-content);
grid-template-rows:repeat(3, min-content);
grid-auto-flow:column;
gap:1rem;
}
.element{
background-color:brown;
border:1px solid black;
width:10rem;
height:10rem;
text-align:center;
color:white;
line-height:10rem;
font-size:2rem;
}
.elementBig{
grid-row-end: span 2;
height:21rem;
}
.compressed{
height:2rem;
}
<div class="container">
<div class="element elementBig">big</div>
<div class="element">1</div>
<div class="element">2</div>
<div class="element">3</div>
<div class="element">4</div>
<div class="element">5</div>
<div class="element">6</div>
<div class="element">7</div>
<div class="element">8</div>
<div class="element">9</div>
<div class="element">10</div>
</div>
when you click on a cell it's reduced but the next one does not rise up: let's say I click on "big" element, I want that "1" to rise up
in addiction i want rows and columns number to be dynamic so in the real grid i'am using this setup:
--n-colonne: 3; //per impostare massimo numero di colonne a 3 su grandi display
display: grid;
$larghezza-senza-spazi: calc(100% - (var(--n-colonne) - 1) * 1rem);
grid-template-columns: repeat(auto-fill, minmax(max(45rem, ($larghezza-senza-spazi)/var(--n-colonne)), 1fr));
grid-template-rows: repeat(12, min-content);
grid-gap: 1rem;
that will need some fix if "grid-auto-flow:column" is to be used