传智博客
快捷导航
蚂蚁部落
蚂蚁部落 网站首页 实例代码 CSS实例 查看内容

为什么margin-top不是作用于父元素

2017-6-21 18:27| 发布者: admin| 查看: 595| 评论: 0|来自: 蚂蚁部落

至于margin-top属性的基本用法再简单不过,那就是设置一个对象的上外边距,看下面的代码实例:

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css"> 
* { 
  margin:0px; 
  padding:0px; 
} 
div { 
  width:100px; 
  height:100px; 
  background-color:green; 
  margin-top:50px; 
} 
</style> 
</head> 
<body> 
  <div></div> 
</body> 
</html>

以上代码可以将div的上边距设置为50px,一切运行良好,没有任何问题,再来看下一段代码:

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css"> 
#parent { 
  width:200px; 
  height:200px; 
  background-color:red; 
} 
#children { 
  width:60px; 
  height:60px; 
  background-color:green; 
  margin:0px auto; 
  margin-top:50px; 
} 
</style> 
</head> 
<body> 
<div id="parent"> 
  <div id="children"></div> 
</div> 
</body> 
</html>

以上代码的初衷是让子元素的顶部距离父元素50px,但是事实上却并没有实现预期的效果,而是子元素顶部紧贴父元素,并且margin-top好像转移给了父元素,让父元素产生上外边距。这其实是一个典型的外边距合并问题,但是并非所有的浏览器都会产生这种情况,一般标准浏览器都会出现此现象,而IE6和IE7在此状态下不会出现外边距合并现象。上外边距合并出现的条件:

1.父元素的上边距与子元素的上边距之间没有border。

2.父元素的上边距与子元素的上边距之间没有非空内容。

3.父元素的上边距与子元素的上边距之间没有padding。

3.父元素和子元素中没有设置定位属性(除static和relative)、overflow(除visible)和display:inline-block等。

4.父元素或者资源都没有浮动。

注意:以上条件必须都要满足才可以。那么解决此中情况的方式也很简单,只要破坏上面的一种情况就可以了。

更多关于外边距合并内容可以参阅margin外边距合并详解一章节。


鲜花

握手

雷人

路过

鸡蛋

最新评论

关于我们|手机版|小黑屋| ( 鲁ICP备10022556号-3 )

GMT+8, 2017-11-19 20:18 , Processed in 0.068363 second(s), 22 queries .

Powered by Discuz! X3.2 Licensed

Copyright © 2012-2017 Design: 蚂蚁部落

返回顶部