使 div 浮动到静态导航元素的底部
Making a div float to the bottom of a static nav element
我有以下基于 Bootstrap 的代码:
<div id="sidebar-wrapper" class="collapse sidebar-collapse">
<nav id="sidebar">
<ul id="main-nav" class="open-active">
....
</ul>
</nav>
</div>
这是#sidebar 的CSS:
#sidebar {
width: 100%;
float: none;
position: static;
}
这将创建一个从上到下延伸的漂亮侧边栏。但是,我似乎无法弄清楚如何添加位于侧边栏最底部的 div。
我的意思截图:
这是屏幕截图中 Test Div
的代码:
<div style="position: absolute; bottom: 0;">
Test Div
</div>
尝试在侧边栏中添加您的 div,并为您的 CSS 添加:
.div {
position: absolute;
bottom: 0;
}
您不能将#sidebar 更改为position:relative?这应该使绝对定位工作。
如果边栏占满页面高度的 100%,您可以创建一个 absolute
位于边栏中的包装器,并将 bottom
属性 设置为 0px
.
这应该看起来像这样:
.wrapper {
position: absolute;
bottom: 0;
}
它是 straight from this example。正如另一位评论者已经指出的那样,您可能必须更改父 #sidebar
元素的 static
定位。
据我所知,这将是唯一的非Javascript方法,但它仅在边栏处于 100% 时才有效。
值得注意的替代选项使用 JavaScript:
假设您知道正在使用的所有元素的高度。然后,您可以简单地将 div
元素的 margin-top
属性 调整为放在底部。
这看起来像这样:
window.onload = function() {
var header = document.getElementById("heading");
var bottom = document.getElementById("bottom");
var height = document.body.scrollHeight;
bottom.style.marginTop = (height - header.clientHeight) + 'px';
}
希望对您有所帮助!
编辑:
现在我想得更多了,这是 calc()
CSS3 function 的完美用例。您可能想检查一下。
使用它有一些注意事项,比如如果您 100% 都不知道底部 div
内容的高度,或者如果您关心交叉兼容性问题(although I would say it has pretty good support).
这段代码看起来像这样:
.bottom {
/* should be moved down a distance equal to the height of
parent container minus the height of the bottom div
and the div above it */
margin-top: calc(100% - (20px + 40px));
}
查看 these neat use cases 看看这是否是您想要考虑进一步探索的选项。
我有以下基于 Bootstrap 的代码:
<div id="sidebar-wrapper" class="collapse sidebar-collapse">
<nav id="sidebar">
<ul id="main-nav" class="open-active">
....
</ul>
</nav>
</div>
这是#sidebar 的CSS:
#sidebar {
width: 100%;
float: none;
position: static;
}
这将创建一个从上到下延伸的漂亮侧边栏。但是,我似乎无法弄清楚如何添加位于侧边栏最底部的 div。
我的意思截图:
这是屏幕截图中 Test Div
的代码:
<div style="position: absolute; bottom: 0;">
Test Div
</div>
尝试在侧边栏中添加您的 div,并为您的 CSS 添加:
.div {
position: absolute;
bottom: 0;
}
您不能将#sidebar 更改为position:relative?这应该使绝对定位工作。
如果边栏占满页面高度的 100%,您可以创建一个 absolute
位于边栏中的包装器,并将 bottom
属性 设置为 0px
.
这应该看起来像这样:
.wrapper {
position: absolute;
bottom: 0;
}
它是 straight from this example。正如另一位评论者已经指出的那样,您可能必须更改父 #sidebar
元素的 static
定位。
据我所知,这将是唯一的非Javascript方法,但它仅在边栏处于 100% 时才有效。
值得注意的替代选项使用 JavaScript:
假设您知道正在使用的所有元素的高度。然后,您可以简单地将 div
元素的 margin-top
属性 调整为放在底部。
这看起来像这样:
window.onload = function() {
var header = document.getElementById("heading");
var bottom = document.getElementById("bottom");
var height = document.body.scrollHeight;
bottom.style.marginTop = (height - header.clientHeight) + 'px';
}
希望对您有所帮助!
编辑:
现在我想得更多了,这是 calc()
CSS3 function 的完美用例。您可能想检查一下。
使用它有一些注意事项,比如如果您 100% 都不知道底部 div
内容的高度,或者如果您关心交叉兼容性问题(although I would say it has pretty good support).
这段代码看起来像这样:
.bottom {
/* should be moved down a distance equal to the height of
parent container minus the height of the bottom div
and the div above it */
margin-top: calc(100% - (20px + 40px));
}
查看 these neat use cases 看看这是否是您想要考虑进一步探索的选项。