有关 CSS 中百分比的问题

zachary.guo 2009-01-09
假设有如下 html 片段:
<body style="width: 100%; height: 100%">
    <div id="top" style="width: 100%; height: 100px; background-color: blue;"></div>   
    <div id="left" style="width: 120px; height: 100%; background-color: green;"></div>
    <div id="right"></div>
</body>

按照上面所述,id 为 "top" 的 div 的宽度为 100%,那个层的确在横向上撑满了蓝色,可是 id 为 left 的层的高度为 100%,但这个层似乎并没有按我想象的那样在纵向撑满绿色。请问 CSS 中的百分比的概念到底是相对于谁而言的?

谢谢!
wintershan 2009-01-09
这个问题好解决,只需要在css中加入"html { height:100%; }",这样就可以了,你试试?
纵向百分比如果不给html指定height:100%,那么div里设高度百分比是不起作用的。
zachary.guo 2009-01-09
wintershan 所述,并没有达到我预期的效果。事实上,该问题的本质在于百分比的参考对象不清楚是谁。

呵呵,还是谢谢你啊!
zachary.guo 2009-01-09
哦,搞错了,是可以实现那种效果的。多谢。


顺便问下,在某个元素上应用百分比,那个这个百分比是相对于哪个元素呢,是它的父亲元素吧

谢谢!
PrincessD 2009-10-20
wintershan 写道
这个问题好解决,只需要在css中加入"html { height:100%; }",这样就可以了,你试试?
纵向百分比如果不给html指定height:100%,那么div里设高度百分比是不起作用的。



我加了 没有用...
areha001 2009-10-22
我在IE6和FF下测试都有效果啊

而且id=left的竖条超过了屏幕的底线,有个上下滚动条。

超过部分的高度约等于id=top横条的高度

FF还多一点可视区到内容的margin


猜测100%是相对于浏览器的可视区域而言的
hyj1254 2009-10-30
wintershan 写道
这个问题好解决,只需要在css中加入"html { height:100%; }",这样就可以了,你试试?
纵向百分比如果不给html指定height:100%,那么div里设高度百分比是不起作用的。

我试了下,发现一点,光有它还没用,必须得再添上这句
body {
height:100%;
}

我的理解:
    浏览器默认width:100%指的就是网页在不出现横向滚动条情况下的宽度;而对height:100%,没有作默认约定。
    浏览器的最大宽度一般是固定的,横向排版的网页即使有也很稀少;而绝大部分的网页都是竖排的,高度不固定,有的网页上下距离很大,有的就是一屏,100%的通常意义是最大高度,放在这里就不合适,到底多高才是最大高度呢?

%是相对"离自身最近的已设置了高度的父类"来说的。
<div style="width:100%;height:300px;">
  <div style="width:50%;height:50%;"></div>
</div>

由于父类的高度指定为300px,这里不设置html { height:100%; },子div的高度也是150px。


Global site tag (gtag.js) - Google Analytics