【问题标题】:Dynamic div height always 100%动态 div 高度始终为 100%
【发布时间】:2015-04-01 22:35:07
【问题描述】:

如何让 div 始终填充 100% 的垂直空间?我有this Fiddle,它显示了我是如何使用 jQuery 完成的,但可以使用 CSS 完成吗?

var height = $('.content').height();
$('.sidebar').height(height);

PS 我们不能在容器上设置高度,因为我们显然需要边栏随着内容填充 .content 区域而增加高度。

【问题讨论】:

  • 你的小提琴不起作用,所以我不知道你想要什么。 100% 的 什么 空间?
  • Fiddle 上没有加载 jQuery,我很抱歉。现在检查。评论的jQuery也与问题无关。如何用 CSS 做到这一点。

标签: jquery css height


【解决方案1】:

好吧,根据您的小提琴,将 700px 的固定高度设置为 .sidebar.content div 就足够了,我认为这不是您想要的,所以在这里您有一个自适应使用具有完全不同 CSS 的 HTML 标记的解决方案:

.wrapper {
    height:100%;
    overflow:hidden;
    width:700px;
}
.sidebar {
    background: grey;
    float:left;
    width: 200px;
    padding-bottom:5000px;
    margin-bottom:-5000px;
}
.content {
    background: #AEAEAE;
    position:relative;
    float:right;
    width:500px;
    padding-bottom:5000px;
    margin-bottom:-5000px;
}
footer {
    clear:both;
    float:none;
    background: yellow;
    display:block;
    height:30px;
    position:relative;
}

此解决方案将接受任何高度,.sidebar.content 都将采用最大 div 的高度,以实现等高的列布局。但是,如果您觉得两个 div 都需要一些高度,您也可以这样做:

.sidebar, .content{min-height:700px;} /* or whatever */

See fiddle 并尝试看看它是如何工作的

【讨论】:

  • 哇@法比奥!我永远不会想出这个。有什么注意事项吗?您应该为此发表一篇完整的博文,然后在此处发回。
  • 不,没什么,这是其中一种方法,甚至不是唯一的一种,只是我最常用的一种(而且我每天都这样做)
  • 如果你有一个 5000 像素的 HEIGHT 侧边栏,那么添加一个 padding-bottom:10000px 和 margin-bottom:-10000px。重要的部分是让 padding-bottom 和 margin-bottom 都具有巨大的值,其中 margin-bottom 是 padding-bottom 的确切负数
【解决方案2】:

您的主要观点是让背景在整个高度上展开,对吗?您不关心 side-element 的“实际”高度,是吗?

在那种情况下,你可以做我在fiddle update of yours中所做的事情:

<div class="main"> 将边栏放在一边。由于 div 总是扩展到其最大的孩子高度,因此无论视口如何,它的高度都会自动成为整个高度。现在添加以下 css 以在具有整个扩展高度的侧边框后面创建一个伪元素并为其着色。瞧,你的整个高度都有你的背景:

.main {
    position: relative;
}
.main:after {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 300px;
    background: gray;
    content: "";
    z-index: -1;
}

【讨论】:

  • 很好 @TC 我稍后会做这个练习并在这里回复你。
【解决方案3】:

我真的迟到了,但我多次遇到这个问题,我认为在这种情况下,display: table-cell; 真的很闪耀:http://jsfiddle.net/yw6w562e/2/

另外,使用

在较小的浏览器尺寸中重新对齐它们也很容易

display: table-header-group;display: table-footer-group;(参见小提琴媒体查询)

【讨论】:

    【解决方案4】:

    尝试使用:

    html, body, .wrapper, .sidebar { height: 100%; }
    

    外包装也必须定义。

    【讨论】:

    • body { height: 100% } 是不好的做法。
    • @scheisse_minelli 有时是不可避免的。有任何资料来支持“不良做法”的说法吗?
    • 这只是我的意见。我不是想辩论。
    • 当发表意见时,不要试图让它们听起来如此“权威”。虽然我在一定程度上同意你不应该习惯性地这样做,但有时你需要实现自适应设计,让页脚在低于视口的内容上粘在底部。让它听起来像是一个无可争辩的事实只会让人们感到困惑。
    • 我实际上同意,这是不好的做法,但请求基本上是要求它,除非你想用 CSS 获得“花哨”。
    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2013-11-14
    • 2011-11-26
    • 1970-01-01
    相关资源
    最近更新 更多