`

如何让height:100%;起作用

 
阅读更多

当你设置一个页面元素的高为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大多数情况下,这样的做法没有任何效果。你知道为什么height:100%不起作用吗?

 

按常理,当我们用css的height属性定义一个元素的高度时,这个元素应该按照设定在浏览器的纵向空间里扩展相应的空间距离,例如,如果一个div元素的css是height:100px,那它应该在页面的竖向空间里占满100px的高度。

 

而跟W3C的规范,百分比的高度在设定时需要根据这个元素的父元素容器的高度。所以,如果你把一个div的高度设置为height:50%,而它的父元素的高度是100px,那么,这个div的高度应该是50px。

 

那为什么height:100%;不能起作用呢?

 

当设计一个页面时,你在里面放置一个div元素,你希望它占满整个窗口高度,最自然的做法是给这个div添加height:100%;的css属性。然而,如果你要是设置宽度为width:100%;,那这个元素的宽度会立刻扩展到窗口的整个横向宽度。高度也会这样吗?

 

错!

 

为了理解为什么不会,你需要理解浏览器是如何计算高度和宽度的。web浏览器在计算有效宽度时会考虑浏览器窗口的打开宽度。如果你不给宽度设定任何缺省值,那浏览器会自动将页面内容平铺填满整个横向宽度。

 

但是高度的计算方式完全不一样。事实上,浏览器根本就不计算内容的高度,除非内容超出了视窗范围(导致滚动条出现)。或者你给整个页面设置一个绝对高度。否则,浏览器就会简单的让内容往下堆砌,页面的高度根本就无需考虑。

因为页面并没有缺省的高度值,所以,当你让一个元素的高度设定为百分比高度时,无法根据获取父元素的高度,也就无法计算自己的高度。换句话说,父元素的高度只是一个缺省值:height: auto;。当你要求浏览器根据这样一个缺省值来计算百分比高度时,只能得到undefined的结果。也就是一个null值,浏览器不会对这个值有任何的反应。

 

那么,如果想让一个元素的百分比高度height: 100%;起作用,你需要给这个元素的所有父元素的高度设定一个有效值。换句话说,你需要这样做:

<html>
    <body>
        <div style="height:100%;">
            <p>想让这个div高度为100%。</p>
        </div>
    </body>
</html>

 现在你给了这个div的高度为100%,它有两个父元素<body><html>。为了让你的div的百分比高度能起作用,你必须设定<body><html>的高度

<html style="height: 100%;">
    <body style="height: 100%;">
        <div style="height: 100%;">
            <p>这样这个div的高度就会100%了</p>
        </div>
    </body>
</html>

 从这个演示中你可以看出,height: 100%;起作用了。

在使用height: 100%;时需要注意的一些事项

1、Margins 和 padding 会让你的页面出现滚动条,也许这是你不希望的。

2、如果你的元素实际高度大于你设定的百分比高度,那元素的高度会自动扩展。

 

(来自:http://t.cn/RzaYuxD)

分享到:
评论

相关推荐

    vue中设置height:100%无效的问题及解决方法

    通常,开发者可能期望通过简单的CSS设置,让某个div元素的高度能够占满其父级元素的全部高度,但是却发现高度并没有如预期般拉伸。这通常发生在Vue项目中设置最外层挂载点(如App.vue中的根元素)时。在这篇文章中,...

    深入理解CSS的height:100%和height:inherit之间的使用区别

    如果父元素的高度是默认的 `auto`,那么 `height: 100%` 将不会起作用,因为此时父元素的高度取决于其内容的高度。 另一方面,`height: inherit` 则是让元素继承其父元素的高度属性值。这意味着元素的高度将与父...

    关于table的width:100%和margin导致溢出

    总的来说,理解`width:100%`和`margin`如何相互作用,以及它们在不同盒模型下的表现,对于防止内容溢出和创建响应式的网页布局至关重要。在处理表格时,尤其需要注意避免直接在表格上设置会导致溢出的外边距,而是将...

    font-size:100%的目的和作用是什么

    看到一些css重设,请问设置font-size:100%的目的和作用是什么? ————————————————————————————— 假如你设置body{font-size:12px;} 但h1是不会继承这个12px,它会按照一定百分比增加...

    w3c标准自适应高度height100%不起作用的问题分析

    在以前的网页中,table用height:100%是可以整屏的,但在网页头部增加: &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;...

    line-height全面解析

    这一技术在当时的排版过程中起到了至关重要的作用。随着计算机科学的发展以及CSS的出现,“leading”的概念被继承下来,并以`line-height`的形式出现在现代网页设计中。 #### 二、基本概念 **Leading**:在传统的...

    记录微信小程序 height: calc(xx – xx);无效问题

    遇到一个小问题,记录一下 问题:在微信小程序中使用scroll-view标签时,用height:cale(xx – xx)设置高度无效,在page中设置高度为百分百依旧无效 ... height: 100%; } .videoList { height: calc(100% - 480rpx); }

    页脚显示在页面底端的布局方法

    - 使用 `position: relative` 定位方式,同时设置 `min-height: 100%` 以确保该容器至少占据整个视口的高度。IE6/7兼容性问题可通过 `_height: 100%;` 解决。 3. **主内容区域 `.main`**: - 通过 `padding-...

    记录微信小程序 height: calc(xx - xx);无效问题

    针对这个问题,一种解决方案是在最外层的`view`标签中直接设置`height: 100%`,这样可以确保视图的高度根据其父容器自动填充。 示例代码如下: ```html &lt;view style="height:100%;"&gt; &lt;!-- 视频列表 --&gt; ...

    兼容IE6的min-width、min-height的简单方法

    min-height属性则定义了元素的最小高度,作用与min-width类似,仅用于高度。这两个属性在现代网页设计中非常有用,但在IE6中并不被支持。 为了兼容IE6,可以通过一些特别的CSS技巧来模拟min-width和min-height的...

    css iphone 确认框

    每个区域都有其独特的样式和作用,共同构成了一个完整的确认框。 #### 标题区域 - **CSS选择器**:`&lt;div style="height:31%;width:100%;..."&gt;` - **功能**:显示确认框的标题或主要信息。 - **样式**: - **高度**...

    Html5让容器充满屏幕高度或自适应剩余高度的布局实现

    这样写的话,当容器内内容很多的时候是没有问题的,可以达到预期的效果,但是如果容器内内容比较少,不足以撑起足够的高度的话,这个CSS 样式实际上是没起作用的。那要怎么解决这个问题呢? 让容器高度充满这个屏幕 ...

    图片完全填充div,且大小相同

    height: 100%; object-fit: cover; /* 让图片完全填充div,裁剪多余部分 */ } ``` 无论是哪种方法,都能达到让图片填充div且保持比例的效果。然而,这种方法可能会导致图片的原始比例被改变,某些部分可能被裁剪...

    浏览器CSS方面兼容手册.txt

    在IE6及以下版本中,使用`clear:both`可能不起作用或效果不明显。 **解决方法:** 为了确保所有浏览器下都能正确清除浮动,可以使用下面的CSS代码: ```css .clear_both { clear: both; height: 0px; font-size:...

    videobox部分的样式.docx

    - **宽度自适应**:视频宽度为100%,最小宽度为1280px,确保视频在不同设备上都能完整显示且保持居中。 - **居中对齐**:通过`top: 50%; left: 50%;`和`transform: translate(-50%, -50%);`实现了视频的水平垂直居中...

    css9种设计技巧

    在网页设计中,CSS(Cascading Style Sheets)起着至关重要的作用,它允许我们对网页的布局、颜色、字体等样式进行精确控制。本文将详细介绍9种实用的CSS设计技巧,帮助提升网页的视觉效果和用户体验。 1. 取消...

    利用定位来显示垂直局中的图片

    同时,为了保持图片的原始尺寸,我们可以设置`max-width`和`max-height`为100%,确保图片不会超出容器的大小: ```css .container { position: relative; } .container img { position: absolute; max-width: ...

Global site tag (gtag.js) - Google Analytics