CSS 100%高度与填充/边缘

CSS 100%高度与填充/边缘

这让我疯狂了几天,但实际上,这是我在过去几年里经常遇到的一个问题:如何使用HTML/CSS,使一个元素的宽度和/或高度达到其父元素的100%,并且仍然有适当的填充或边距?

所谓“适当”,我的意思是如果我的父元素是200px高个子和我指定height = 100%带着padding = 5px我希望我能得到一个190px高元素border = 5px在所有方面,在父元素中很好地居中。

现在,我知道标准的box模型并不是这样指定它应该工作的(虽然我想知道为什么,确切地.),所以显而易见的答案是行不通的:

#myDiv {
    width: 100%
    height: 100%;
    padding: 5px;}

但在我看来,必须有某种方法为一个任意大小的父母可靠地产生这种效果。有谁知道完成这个(看似简单的)任务的方法吗?

哦,我对IE兼容性不太感兴趣,所以(希望如此)会让事情变得更容易一些。

编辑:既然有人问了一个例子,下面是我能想到的最简单的例子:

<html style="height: 100%">
    <body style="height: 100%">
        <div style="background-color: black; height: 100%; padding: 25px"></div>
    </body></html>

现在的挑战是让黑匣子在所有边缘上显示一个25像素的填充,而页面变大到需要滚动条的程度。


繁华开满天机
浏览 419回答 3
3回答

九州编程

我学会了如何做这样的事情-阅读“PRO HTML和CSS设计模式“.display:block控件的默认显示值。div但我喜欢把它说清楚。容器必须是正确的类型;position属性是fixed,&nbsp;relative,或absolute..stretchedToMargin {&nbsp; display: block;&nbsp; position:absolute;&nbsp; height:auto;&nbsp; bottom:0;&nbsp; top:0;&nbsp; left:0;&nbsp; right:0;&nbsp; margin-top:20px;&nbsp; margin-bottom:20px;&nbsp; margin-right:80px;&nbsp; margin-left:80px;&nbsp; background-color: green;}<div class="stretchedToMargin">&nbsp; Hello, world</div>小提琴努舒评语

慕田峪4524236

更好的方法是使用calc()属性。所以你的案子看起来是:#myDiv&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;calc(100%&nbsp;-&nbsp;5px); &nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;calc(100%&nbsp;-&nbsp;5px); &nbsp;&nbsp;&nbsp;&nbsp;padding:&nbsp;5px;}简单,干净,没有解决办法。请确保不要忘记值和操作符之间的空格(例如(100%-5px),这将破坏语法。好好享受吧!
打开App,查看更多内容
随时随地看视频慕课网APP