>  기사  >  웹 프론트엔드  >  div块中嵌套div块怎么父块div就会下沉_html/css_WEB-ITnose

div块中嵌套div块怎么父块div就会下沉_html/css_WEB-ITnose

WBOY
WBOY원래의
2016-06-24 12:08:351733검색

直接上代码:

<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>

我的意图是出现这样的效果

可结果出现了这样的效果

我不明白为什么我的header上会出现一块空白区域。我哪个属性写错了?


回复讨论(解决方案)

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>



这样改就可以了,不过这样挺乱的
建议你
1、写样式之前先重置所有元素。*{margin:0; padding:0}
2、其次是能用padding的就不用margin,比如你那个titletext的元素,如果不用margin,直接用父元素#header的padding,就能显示正常。
3、另外,h5是标题标签,本身有上下margin的,你需要先重置为0

同上样式问题很多,你说的问题出在

本身是有margin值的,

呵呵,有一个简单的解决方法,就是给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。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.