Почему вы определяете grid-template-rows
два раза?
.grid-container {
display: grid;
grid-template-rows: 34px 1fr 30% 34px;
grid-template-rows: 34px 1fr 70% 34px;
}
В этом нет необходимости. Браузер (во время каскада) просто лишает законной силы первое правило и использует второе. Другими словами, первое правило игнорируется.
Выберите одно или другое или просто используйте auto
(высота на основе содержимого).
Добавьте это к своему коду:
.grid-container {
display: grid;
/* grid-template-rows: 34px 1fr 30% 34px; */
grid-template-rows: 34px auto 1fr 34px; /* adjustment */
}
.gMessages {
grid-area: messages;
overflow: auto; /* new */
}
.grid-container {
display: grid;
grid-template-areas:
"header header header"
"mailboxes messages messages"
"mailboxes viewer viewer"
"footer footer footer";
grid-template-columns: 200px 1fr;
/* grid-template-rows: 34px 1fr 30% 34px; */
grid-template-rows: 34px auto 1fr 34px; /* adjustment */
height: 100vh;
}
.gMessages {
grid-area: messages;
background: #bbb;
overflow: auto; /* new */
}
.header {
grid-area: header;
background: #aaa;
}
.mailboxes {
grid-area: mailboxes;
background: #ccc;
}
.footer {
grid-area: footer;
background: #aaa;
}
.viewer {
grid-area: viewer;
background: white;
}
body {
margin: 0px;
font-family: tahoma;
font-size: 12px;
}
<div class="grid-container">
<div class="header">header</div>
<div class="mailboxes">mailboxes</div>
<div class="footer">footer</div>
<div class="gMessages">text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text<br><br>text
<div class="viewer"></div>
</div>
jsFiddle demo