如果有margin-top,则将div的高度拉伸到页面末尾

Posted

技术标签:

【中文标题】如果有margin-top,则将div的高度拉伸到页面末尾【英文标题】:Stretch height of div until the end of the page if there is margin-top 【发布时间】:2014-08-26 10:47:40 【问题描述】:

我有以下代码:

#content    
            left: 50%;
            margin-left: -498px;
            margin-top: 186px;
            width: 984px;
            min-height: 100%;
            background-color: rgba(255, 255, 255, 0.875);
            font-size: 16px;
            position: absolute;
            z-index:2;
            padding-left: 8px;
            padding-right: 8px;
            padding-bottom: 8px;
            padding-top: 8px;
            font-family: calibri, sans-serif;
            

我用 min-height: 100%; 制作 div 直到结束,这当然有效。但我也有一个标题图片和一个菜单,所以我写了 margin-top: 186px; 但是现在它会被拉长一点,直到最后(所以我总是有可能滚动,即使它不需要)

所以基本上div的高度应该是:100% - 186px

谢谢!

【问题讨论】:

【参考方案1】:

使用 css 中的 calc 属性来做你写的事情:

height: calc(100% - 186px);

这在包括 IE9 在内的所有现代浏览器中都有很好的支持。作为 IE8 的后备(如果您完全关心它),您可以先将高度设置为 100%,然后只有使用该浏览器的用户才能获得滚动条。

【讨论】:

【参考方案2】:

您可以在下面的代码中使用绝对位置放置您的 div

#content
 top: 0;
 bottom: 0;
 position: absolute;     

【讨论】:

以上是关于如果有margin-top,则将div的高度拉伸到页面末尾的主要内容,如果未能解决你的问题,请参考以下文章

将相对div拉伸到其静态父级的高度

具有 display:table 样式的嵌套 div 在 IE 中不会拉伸到 100% 高度

React Bootstrap flexbox 不会拉伸到内容高度

如何将织物画布拉伸到其父 div 的全宽

Div 100% 高度适用于 Firefox,但不适用于 IE

求教我一个div下面嵌套了另一个div,当我设置子div的margin-top的值时,为啥父div也跟着变成