У меня есть базовый макет, где моя сетка CSS расположена в гибком макете, так что сетка занимает все доступное пространство, оставшееся, кроме нижнего колонтитула.
Заголовок позиционируется с position: sticky;
.
Элементы в сетке , а не занимают всю высоту, доступную в сетке.
В моем макете сетки CSS я использую align-content: space-between;
, чтобы оба элемента располагались сверху и снизу сетки с некоторым пробелом между ними.
Это хорошо смотрится в Chrome и FF, но в Safari (Mac и iOS) второй элемент сетки помещается вне сетки (по высоте моего липкого заголовка).
body {
margin: 0;
padding: 0;
font-family: sans-serif;
text-align: center;
}
.flex {
min-height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
}
header {
position: sticky;
position: -webkit-sticky;
top: 0;
z-index: 999999;
padding: 3em;
background-color: tomato;
}
footer {
padding: 1em;
background-color: tomato;
}
.grid {
width: 100%;
-webkit-flex: 1;
flex: 1;
display: grid;
grid-template-columns: 100%;
grid-template-rows: auto auto;
-webkit-align-content: space-between;
align-content: space-between;
background-color: khaki;
}
.item {
box-sizing: border-box;
padding: 0.6em;
}
.pink {
background-color: pink;
}
.orange {
background-color: orange;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div class="flex">
<header>Header</header>
<div class="grid">
<div class="item pink">Item 1</div>
<div class="item orange">Item 2</div>
</div>
<footer>Footer</footer>
</div>
</body>
</html>