目标
设置一个 div,其高度为没有定义高度的父级的 80%。更具体地说,我想要一个responsive-effect。
问题
我有五层:.header、.site > .container > .right sidebar和.left content。
标题的高度为 50 像素。站点的高度是视口高度- 50 像素(从标题开始)。在站点的 div 内部,有一个容器。我想将他的高度设置为视口高度的 80% - 距标题 50 像素 - 网站的 div 偏移量(1.5em 填充)并且我没有使用百分比,只有像素 - 我需要做什么?
FiddleJS
技术细节
似乎工作完美,对吧?是的,完美地工作......与像素。尝试将高度更改.left-content
为 80%,您将看到我的问题。
代码(与 FiddleJS 相同)
HTML:
<div class="header">
</div>
<div class="site">
<div class="container">
<div class="container-head">
</div>
<div class="container-body">
<div class="right-sidebar">
Just a menu will be right here.
</div>
<div class="left-content">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div>
</div>
</div>
CSS:
body {
font-family: Tahoma
}
.header {
background-color: #49c98e;
width: 100%;
height: 50px;
}
.site {
padding: 1.5em 0;
}
.container {
background-color: #c7c7c7;
width: 95%;
margin: 0 auto;
position: relative;
}
.right-sidebar {
background-color: #a94cd5;
width: 300px;
height: 100%;
position: absolute;
right: 0;
}
.left-content {
background-color: #dbdbdb;
width: 100%;
height: 500px;
overflow-y: scroll;
}
.left-content ul {
padding: 25px 0;
float: left;
}
.left-content ul li {
background-color: #a94cd5;
width: 150px;
height: 100px;
float: left;
margin: 15px;
list-style: none;
}
jQuery/JavaScript:
function calculateResponsiveWidth() {
$realWidth = $(".container").width() - $(".right-sidebar").outerWidth(),
$containerContent = $(".left-content");
$containerContent.css({
"width": $realWidth
});
}
$(window).on("resize", function () {
calculateResponsiveWidth();
});
calculateResponsiveWidth();
提前致谢。
更新 v1
我开始认为使用百分比不是最好的选择。在容器区域之后,我想要一个 25 像素的间距——并且在不同的分辨率下它没有保持百分比。
有一个媒体查询建议,但我需要 Internet Explorer 8 的替代品——有人猜到了吗?也许 JavaScript 可以解决我的问题?
更新 v2
用一点 JavaScript、数学和逻辑解决了这个问题。感谢所有贡献的人!