如何强制子div为父div的高度的100%而不指定父级的高度?

我有一个具有以下结构的网站:

<div id="header"></div>

<div id="main">
  <div id="navigation"></div>
  <div id="content"></div>
</div>

<div id="footer"></div>

导航位于左侧,内容div位于右侧。 内容div的信息通过PHP引入,因此每次都不同。

我如何垂直缩放导航,使其高度与内容div的高度相同,无论加载哪个页面?


#1楼

注意 :此答案适用于不支持Flexbox标准的旧版浏览器。 有关现代方法,请参阅: https//stackoverflow.com/a/23300532/1155721


我建议你看一下使用跨浏览器CSS和无黑客的Equal Height Columns

基本上,使用CSS以浏览器兼容的方式执行此操作并非易事(但对于表格而言是微不足道的),因此请找到适合您的预打包解决方案。

此外,答案取决于您是想要100%高度还是相同高度。 通常它的高度相等。 如果它是100%高度,答案会略有不同。


#2楼

[在另一个答案中提到Dmity的Less代码]我猜这是某种“伪代码”?

从我的理解尝试使用应该做的技巧的人造柱技术。

http://www.alistapart.com/articles/fauxcolumns/

希望这可以帮助 :)


#3楼

如果您不介意在意外短的内容div中剪辑导航div,那么至少有一种简单的方法:

#main {
position: relative;
}

#main #navigation {
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 10em; /* or whatever */
}

#main #content {
margin: 0;
margin-left: 10em; /* or whatever width you set for #navigation */
}

另外还有人造柱技术。


#4楼

这是一个令人沮丧的问题,一直与设计师打交道。 诀窍是你需要在CSS中的BODY和HTML上设置高度为100%。

html,body {
    height:100%;
}

这个看似毫无意义的代码是为浏览器定义100%的含义。 令人沮丧,是的,但这是最简单的方法。


#5楼

问题的标题和内容有点矛盾。 标题说的是父div,但这个问题听起来好像你想要两个兄弟div(导航和内容)的高度相同。

您是否希望导航和内容都是主要高度的100%,或者(b)希望导航和内容高度相同?

我假设(b)......如果是这样的话,我不认为你能够在你当前的页面结构(至少不是纯CSS和没有脚本)的情况下做到这一点。 您可能需要执行以下操作:

<main div>
    <content div>
         <navigation div></div>
    </div>
</div>

并将内容div设置为具有导航窗格宽度的左边距。 这样,内容的内容位于导航的右侧,您可以将导航div设置为内容高度的100%。

编辑:我完全在脑子里这样做,但你可能还需要将导航div的左边距设置为负值,或者将它的绝对左边设置为0以将其推回到最左边。 问题是,有很多方法可以解决这个问题,但并非所有方法都能与所有浏览器兼容。


#6楼

最简单的方法是伪造它。 List Apart已经广泛涵盖了这一点, 就像2004年Dan Cederholm的这篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值