У меня есть следующий макет с 2 верхними и нижними колонтитулами:
.my-grid {
display: grid;
grid-template-areas:
"header1"
"header2"
"mainAreaExpandMePlease"
"footer1"
"footer2"
"footer3"
;
grid-template-rows: 27px 27px 1fr 28px 28px 28px;
height: 100%;
}
Основная область расширится, чтобы заполнить пробел, оставшийся после отображения верхних и нижних колонтитулов.
Я хочу иметь возможность включать и выключать нижние колонтитулы (показывать / скрывать их), чтобы они сворачивались. С кодом выше, пробел останется на месте нижнего колонтитула, когда мы его скрываем.
Как мне поступить:
- Наличие главной области, которая всегда расширяется
- Наличие дополнительных верхних и нижних колонтитулов, которые сворачиваются при скрытии
Примеры:
- Если
header1
рухнет, то header2
должно занять его место и mainAreaExpandMePlease
должно расшириться до того места, где header2
раньше было
- Если
header2
рухнет, то mainAreaExpandMePlease
увеличится еще на 27px
- Если
footer3
рухнет, то footer2
займет место footer3
, footer1
займет место footer2
и mainAreaExpandMePlease
растянется еще на 28px
Спасибо!
Скрипка: https://jsfiddle.net/jg6ho4wu/1/
html, body {
height: 100%;
margin: 0;
padding: 0;
}
.my-grid {
display: grid;
grid-template-areas:
"header1"
"header2"
"mainAreaExpandMePlease"
"footer1"
"footer2"
"footer3";
grid-template-rows: 27px 27px 1fr 28px 28px 28px;
height: 100%;
}
.header1 {
grid-area: header1;
background-color: yellow;
}
.header2 {
grid-area: header2;
background-color: magenta;
}
.mainAreaExpandMePlease {
grid-area: mainAreaExpandMePlease;
background-color: cyan;
}
.footer1 {
grid-area: footer1;
background-color: green;
}
.footer2 {
grid-area: footer2;
background-color: red;
}
.footer3 {
grid-area: footer3;
background-color: blue;
}
<div class="my-grid">
<div class="header1"></div>
<div class="header2"></div>
<div class="mainAreaExpandMePlease"></div>
<div class="footer1"></div>
<div class="footer2" style="display:none"></div>
<div class="footer3"></div>
</div>