Во-первых, ваш код " грязный " (бесконечные идеи / хитрости / переполнение / сгибание любых свойств там :) - для очень простого макета сетки = неожиданно ошибки )
Почему бы не использовать простую сетку flexbox? https://css-tricks.com/dont-overthink-flexbox-grids/
О вашей "ошибке хаоса" - до этого - голубая карта (Первый столб) исчезает с экрана из-за этих двух строк:
align-content: center;
justify-content: center;
фрагмент
.grid-container {
display: flex;
align-content: center;
justify-content: center;
width: 100%;
height: 80vh;
border: 5px solid red;
flex-wrap: wrap;
overflow-y: auto;
}
.grid-item {
border-radius: 15px;
margin: 10px;
width: 100%;
height: 45%;
background-color: orchid;
}
<h2>The blue box out of the screen</h2>
<div class="inst-data shadow">
<div class="d-flex flex-column justify-content-center align-items-center">
<h2 class="text-center border-bottom my-2" style="height: 10%; width: 100%;">Title</h2>
<div class="grid-container" id="ch-div">
<canvas id="buy-chart" style="background: blue;" width="200" height="200" class="grid-item">1</canvas>
<canvas id="net-chart" width="200" height="200" class="grid-item">2</canvas>
<canvas id="stock-chart" width="200" height="200" class="grid-item">3</canvas>
<canvas id="price-chart" style="background: red;" width="200" height="200" class="grid-item">4</canvas>
</div>
</div>
</div>
Перейдите наверх ==> исправьте свою проблему (но опять же, возможно, используйте подход с использованием кода различий):
align-content: top;
justify-content: center;
.grid-container {
display: flex;
align-content: top;
justify-content: center;
width: 100%;
height: 100vh;
border: 5px solid red;
flex-wrap: wrap;
overflow-y: auto;
}
.grid-item {
border-radius: 15px;
margin: 10px;
width: 100%;
height: 45%;
background-color: orchid;
}
<div class="inst-data shadow">
<div class="d-flex flex-column justify-content-center align-items-center">
<h2 class="text-center border-bottom my-2" style="height: 10%; width: 100%;">Title</h2>
<div class="grid-container" id="ch-div">
<canvas id="buy-chart" style="background: blue;" width="200" height="200" class="grid-item">1</canvas>
<canvas id="net-chart" width="200" class="grid-item">2</canvas>
<canvas id="stock-chart" width="200" class="grid-item">3</canvas>
<canvas id="price-chart" style="background: red;" class="grid-item">4</canvas>
</div>
</div>
</div>