Heim  >  Artikel  >  Web-Frontend  >  div块中嵌套div块怎么父块div就会下沉_html/css_WEB-ITnose

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

WBOY
WBOYOriginal
2016-06-24 12:08:351693Durchsuche

直接上代码:

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn