Heim >Web-Frontend >HTML-Tutorial >div块中嵌套div块怎么父块div就会下沉_html/css_WEB-ITnose
直接上代码:
<style>body{ margin:0; padding:0;}#header{ height:100px; width:100%; margin-top:0; padding:0; background:#999;}#header #titletext{ margin-top:20px; margin-left:40px; padding:0;}#header #titletext #h5{ }#content{ }</style></head><body> <div id="header"> <div id="titletext"> <h5>XXX系统</h5> </div> </div> <div id="content"> </div> <div id="footer"> </div></body>
position:absolute;
加上这个
#header #titletext{position:absolute; margin-top:20px; margin-left:40px; padding:0;}
垂直margin压缩
可以考虑:去掉 #titletext{margin-top:20px;}
改设 #header {padding-top:20px;}
#header #titletext{
margin-top:20px; margin-left:40px;
padding:0;
<style type="text/css">body{ margin:0; padding:0;}#header{ height:100px; width:100%; margin-top:0; padding:0; background:#999; padding-top:20px;/*加上*/}#header #titletext{ /*注释掉margin-top:20px;*/ margin-left:40px; padding:0;}#header #titletext h5{/*这里的h5是标签选择器才对,因为你并没在HTML中为H5定义ID,所以不能加#*/ margin:0; padding:0;}#content{ }</style>
同上样式问题很多,你说的问题出在
呵呵,有一个简单的解决方法,就是给header添加"border:1px solid #999"样式,就可以了
#header{
height:100px;
width:100%;
margin-top:0;
padding:0;
overflow:hidden;
background:#999;
}
在ID header里面加上overflow:hidden;就出现你意想的效果了
给所有的元素加上margin:0;padding:0
因为所有的元素在不同的浏览器下默认有不同的margin和padding,如果不重置为0的话,调兼容会调死人的
产生此问题的根本原因是:margin collapse。
请看下面对CSS2.1标准8.3.1小节的引用:
The top margin of an in-flow block element collapses with its first in-flow block-level child's top margin if the element has no top border, no top padding, and the child has no clearance.
翻译为中文就是:
如果in-flow结点没有top-border, 也没有top-padding,那么它的top margin 会与它的第一个孩子的top marin进行合并。
你的代码中h5具有默认的margin 22, titletext具有margin 20, 这两个会进行margin collapse。结果是titletext的top margin为22。
接下来,titletext会与header进行margin collapse。结果是header的top margin为22。
接下来,header会与body进行margin collapse。结果是body的top margin为22。
因此,实际上header、body都具有了22宽度的top margin,而margin是不会被绘制背景色。
你明白了么?。。。。
修改方法,
给header加上border或者padding。