Я использую Flexbox для отображения верхнего, среднего и нижнего колонтитула на странице. Нижний колонтитул всегда внизу. Средняя часть растягивается с помощью flex-grow:1
, так что все три элемента вместе хорошо вписываются в страницу.
Это отлично работает в браузерах настольных компьютеров. В мобильных браузерах я не могу заставить макет реагировать на отображение и скрытие панели URL / панелей инструментов мобильного браузера.
Использование 100vh
или 100%
, поскольку высота не принимает эти полосына мобильный на счет.
Я пытался добавить javascript, чтобы ответить на изменение размера / прокрутку окна, но, похоже, это работает только половину времени.
Использование Javascript кажется довольно хакерским, есть ли CSS-способ, позволяющий учесть мобильный URL-бар?
Как разместить гибкий элемент в нижней части страницы на мобильном телефоне, даже есликогда строка URL показывает и скрывает?
const app = document.querySelector("app")
window.addEventListener("resize", () => resize())
window.addEventListener("scroll", () => resize())
function resize(){
console.log("resizing window")
app.style.height = window.innerHeight + "px";
}
body {
margin:0; padding:0;
}
app, section {
box-sizing:border-box;
}
app {
display:flex;
flex-direction:column;
height:100vh;
border:4px solid blue;
}
.header {
background-color:#4cc;
}
.middle {
flex-grow:1;
background-color:#cc4;
}
.footer {
background-color:#4cc;
}
<app>
<section class="header">
Header
</section>
<section class="middle">
Middle
</section>
<section class="footer">
Footer
</section>
</app>