javascript - 计算页眉和页脚之间的高度
问题描述
我创建了一个 sidenav 推送。我还编写了一个 javascript 函数来计算页眉和页脚之间的剩余高度:
function resizeWindow(){
var headerHeight = $("#header-web").height();
var footerHeight = $("#web-footer").height();
var windowHeight = $("html").height();
var remainHeight = windowHeight-headerHeight-footerHeight;
$("#mySidenav").css({"height":remainHeight});
}
然后我在负责打开sidenav的内部调用它:
function openNav() {
resizeWindow();
document.getElementById("mySidenav").style.width = "400px";
document.getElementById("map").style.marginRight = "250px";
}
我在 Mac 上工作,当窗口完全打开时,sidenav 占据了足够的位置,但是当它缩小或者我尝试在另一台计算机上打开它时,div 没有很好地放置在页眉和页脚之间。
以下捕获显示了该问题:
如果您知道问题的根源是什么,我将不胜感激向您学习!
解决方案
根本不需要javascript,你可以用纯css来处理
html, body {
height: 100%;
padding: 0;
margin: 0;
}
.wrapper {
display:flex;
flex-direction:column;
overflow:hidden;
height: 100vh;
}
.wrapper > header {
background:#f5f5f5;
padding:30px;
flex: 0 0 auto;
}
.wrapper > main {
position:relative;
flex: 1 1 auto;
overflow: hidden;
display: flex;
}
.wrapper > main > .scroller {
width: 100%;
min-height:100%;
overflow:auto;
padding:30px;
}
.wrapper > main > aside {
position:absolute;
top: 0;
right: 0;
bottom: 0;
width: 320px;
color:#eee;
background:#000;
padding:30px;
}
.wrapper > footer {
background:#f5f5f5;
padding:30px;
flex: 0 0 auto;
}
<div class="wrapper">
<header>
header
</header>
<main>
<div class="scroller">
main content
</div>
<aside>
sidebar
</aside>
</main>
<footer>
footer<br>brrrr<br>brrrrrrrrr
</footer>
</div>
推荐阅读
- lit-element - 如何在 LitElement 中将嵌套数据结构作为属性传递?
- django - Token 类型的对象不是 JSON 可序列化的
- python - 基于背景颜色识别边界框 - PyTesseract
- reactjs - AWS Lightsail LAMP 项目 Bootstrap JS 不工作
- java - 如何有效地将日志索引到弹性搜索
- javascript - 为什么 e.preventDefault 没有在 keydown 事件上执行?
- windows - 区分同时使用的两个同种不同设备产生的事件
- javascript - 如何在 Antd 中正确实现一个开关来匹配输入?
- sql - 如何在视图中使用参数
- jquery - 是否可以在每个类名的 jQuery 上使用 .one,即使它在 Livewire 中的每次输入搜索都会发生变化?