当你设置一个页面元素的高为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)
相关推荐
通常,开发者可能期望通过简单的CSS设置,让某个div元素的高度能够占满其父级元素的全部高度,但是却发现高度并没有如预期般拉伸。这通常发生在Vue项目中设置最外层挂载点(如App.vue中的根元素)时。在这篇文章中,...
如果父元素的高度是默认的 `auto`,那么 `height: 100%` 将不会起作用,因为此时父元素的高度取决于其内容的高度。 另一方面,`height: inherit` 则是让元素继承其父元素的高度属性值。这意味着元素的高度将与父...
总的来说,理解`width:100%`和`margin`如何相互作用,以及它们在不同盒模型下的表现,对于防止内容溢出和创建响应式的网页布局至关重要。在处理表格时,尤其需要注意避免直接在表格上设置会导致溢出的外边距,而是将...
看到一些css重设,请问设置font-size:100%的目的和作用是什么? ————————————————————————————— 假如你设置body{font-size:12px;} 但h1是不会继承这个12px,它会按照一定百分比增加...
在以前的网页中,table用height:100%是可以整屏的,但在网页头部增加: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <...
这一技术在当时的排版过程中起到了至关重要的作用。随着计算机科学的发展以及CSS的出现,“leading”的概念被继承下来,并以`line-height`的形式出现在现代网页设计中。 #### 二、基本概念 **Leading**:在传统的...
遇到一个小问题,记录一下 问题:在微信小程序中使用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-...
针对这个问题,一种解决方案是在最外层的`view`标签中直接设置`height: 100%`,这样可以确保视图的高度根据其父容器自动填充。 示例代码如下: ```html <view style="height:100%;"> <!-- 视频列表 --> ...
min-height属性则定义了元素的最小高度,作用与min-width类似,仅用于高度。这两个属性在现代网页设计中非常有用,但在IE6中并不被支持。 为了兼容IE6,可以通过一些特别的CSS技巧来模拟min-width和min-height的...
每个区域都有其独特的样式和作用,共同构成了一个完整的确认框。 #### 标题区域 - **CSS选择器**:`<div style="height:31%;width:100%;...">` - **功能**:显示确认框的标题或主要信息。 - **样式**: - **高度**...
这样写的话,当容器内内容很多的时候是没有问题的,可以达到预期的效果,但是如果容器内内容比较少,不足以撑起足够的高度的话,这个CSS 样式实际上是没起作用的。那要怎么解决这个问题呢? 让容器高度充满这个屏幕 ...
height: 100%; object-fit: cover; /* 让图片完全填充div,裁剪多余部分 */ } ``` 无论是哪种方法,都能达到让图片填充div且保持比例的效果。然而,这种方法可能会导致图片的原始比例被改变,某些部分可能被裁剪...
在IE6及以下版本中,使用`clear:both`可能不起作用或效果不明显。 **解决方法:** 为了确保所有浏览器下都能正确清除浮动,可以使用下面的CSS代码: ```css .clear_both { clear: both; height: 0px; font-size:...
- **宽度自适应**:视频宽度为100%,最小宽度为1280px,确保视频在不同设备上都能完整显示且保持居中。 - **居中对齐**:通过`top: 50%; left: 50%;`和`transform: translate(-50%, -50%);`实现了视频的水平垂直居中...
在网页设计中,CSS(Cascading Style Sheets)起着至关重要的作用,它允许我们对网页的布局、颜色、字体等样式进行精确控制。本文将详细介绍9种实用的CSS设计技巧,帮助提升网页的视觉效果和用户体验。 1. 取消...
同时,为了保持图片的原始尺寸,我们可以设置`max-width`和`max-height`为100%,确保图片不会超出容器的大小: ```css .container { position: relative; } .container img { position: absolute; max-width: ...