css盒模型中子元素垂直方向上总高度与父元素height的关系
来源:互联网 发布:无限极工资知乎 编辑:程序博客网 时间:2024/04/30 11:07
我们都知道,css和模型中,子元素水平方向的7属性(margin-left, border-left, padding-left, width, padding-right, border-right, margin-right)之和要等于父元素的width,那么垂直方向上的情况又怎么样呢?即子元素的margin-top, border-top,padding-top, height,padding-bottom,border-bottom,margin-bottom之和与父元素的height关系是什么。
下面我们先讨论marg-top和margin-bottom,然后讨论padding-top和padding-bottom
首先看如下代码以及运行结果:
<html> <head> <title>MarginBottom</title> </head> <body> <div style = "background: gray; width: 100px;height: 100px;border: 2px solid green;"> <div style = "background: red;margin:20px 0 200px;"> A </div> <div style = "background: black;color: white"> C </div> </div> <div style = "background: blue; width: 100px; height: 100px;"> </div> </body></html>
运行结果(在火狐中):
灰色div框的高度设置为height = 100px(设置绿色边框是为了防止和红色div框的上边距折叠),而它的第一个子div框(红色)的上边距为20px,下边距为200px,即使不算红色div框的内容的高度(即其height值),这两项之和(即红色div框的margin-top + margin-botttom)为220px,大于其父div(灰色)的height值,因此灰色div框的第二个子div框(黑色)被推了出来。但是我们发现,红色div框里面的文本依然能够正常显示,并且有背景色,说明红色div存在高度。而且,这些对蓝色div框(灰色div框的兄弟节点)的显示没有影响。
这种情况在IE9里面有所不同,下面是在IE9里面的运行情况:
可以看到,情况和在火狐里面不同,父div框(灰色)扩展了自己的高度。
下面再来看padding-top和padding-bottom,代码和运行结果如下:
<html> <head> <title>MarginBottom</title> </head> <body> <div style = "background: gray; width: 100px;height: 100px;border: 2px solid green;"> <div style = "background: red;padding:20px 0 200px;"> A </div> <div style = "background: black;color: white"> C </div> </div> <div style = "background: blue; width: 100px; height: 100px;"> </div> </body></html>
运行结果(火狐中):
从结果可以看到,红色div框的padding-top(20px)与padding-bottom(200px)之和大于父div框的height(100px)值,但是红色div框仍然有一定的高度,能够正常显示文本。情形和上面的margin-top,margin-bottom差不多,不同的是背景色从灰色div框里面延伸了出来,并且延伸出来的背景色位于蓝色div框的下方。而且不影响蓝色div框。
在IE9里面,父元素依然扩展自己的高度,运行结果如下:
总结
从上面的结果中可以看出,子元素垂直方向上的7属性和父元素的height之间没有像水平7属性与父元素的width之间的关系,即子元素垂直方向上的7属性之和并不一定要等于父元素的height值。由于没有了这种约束,这7个属性之间互不影响,比如父元素的height为200px,子元素(没有padding,border)的margin-top为20px,margin-bttom为50px,子元素的height并不非得为130px(不考虑边距折叠),你可以设置为任意值,依然可以按照指定的值显示。
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- css盒模型中子元素垂直方向上总高度与父元素height的关系
- CSS中子元素浮动导致父元素高度塌陷解决方案
- css中子元素根据父元素设置百分比高度的问题。
- 父容器height不确定的情况下,实现子元素垂直方向自适应居中
- css中子元素margin影响父元素的解决方法
- css中的外边距合并时垂直方向上的普通流相邻元素间
- css中子元素相对于父元素定位
- 图片水平、垂直居中与父元素的css方法
- 认识css样式(垂直居中-父元素高度确定的多行文本)
- JQuery的height函数(操作元素高度)
- CSS子元素跟父元素的高度一致
- 垂直居中-父元素高度确定的单行文本
- 【Html】垂直居中-父元素高度确定的单行文本
- 垂直居中-父元素高度确定的多行文本
- css中子元素浮动,无法自动撑开父元素的解决办法
- CSS盒模型、行内元素与块级元素
- css---父元素高度不确定,如何通过css样式垂直居中
- xml中子元素与属性有什么区别和关系?
- TCP并发服务器程序
- IOS开发获取图片的方法
- SSH远程登录服务
- hdu 3549 Flow Problem 最大流
- LRUCache
- css盒模型中子元素垂直方向上总高度与父元素height的关系
- 泛型
- 运维自动化之salt
- hdu2087-剪花布条
- Tarjan算法
- OpenStack完整安装手册(CentOS6.2)
- poj2505 - A multiplication game
- Core Foundation对象的内存管理原则
- ios文件读写操作