css margin-top属性不起作用的几个原因

大家在编写css的时候,明明设置了margin-top属性,但是并没有达到预期效果,而且检查多次也不知道我问题出在哪里。本文对margin-top失效的几种原因进行分析。

原因一:
外边距合并margin-top属性失效。代码实例如下:

<!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">
.first{
  width:100px;
  height:100px;
  background-color:red;
  margin-bottom:60px;
}
.second{
  width:100px;
  height:100px;
  background-color:green;
  margin-top:40px;
}
</style>
</head>
<body>
<div class="first"></div>
<div class="second"></div>
</body>
</html>

从以上代码的运行可以看出,第二个div设置的margin-top并没有生效,起作用的是第一个div的设置的margin-bottom,这里有个规律,那就是合并后的外边距的高度等于外边距的高度中的较大的一个,所以遇到此种情况可以格外注意外边距大小的设置。

 

原因二:
子元素和父元素也可能会导致设置的子元素上外边距失效情况,代码实例如下:

<!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">
.father{
  width:300px;
  height:300px;
  background-color:red;
  margin-top:20px;
}
.children{
  width:100px;
  height:100px;
  background-color:blue;
  margin-top:10px;
}
</style>
</head>
<body>
<div class="father">
  <div class="children"></div>
</div>
</body>
</html>

解决方法:
为父对象在相应的外边距方向上有边框(border)和内边距(padding),或者为overflow属性值设置为hidden即可避免。
IE6浏览器下不会出现外边距合并现象。

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

css margin用于设置对象标签之间距离间隔,例如如果要使两个div标签之间有一定的间距,我们可以使用css margin属性来设置。本文章向码农介绍css margin外边距使用方法和实例,需要的朋友可以参考一下。
我们大家都知道,margin:0 auto可以使div水平居中,但有的时候,我们明明为div设置了margin:0 auto,但仍然不取作用。本文章向码农介绍一下margin:0 auto不居中的几个原因。需要的可以参一下。
span默认是行属性,而div默认是块属性,把span强制设为块属性就可以了。
边框的外面可以有一层边外补白(margin),边外补白可以把块级元素分开.边外补白定义了围绕某种元素(elements)的空白. 可以查看盒模式,了解边外补白和边内补白. 边外补白分为上边外补白(top),下边外补白(bottom),左边外补白(left),右边外补白(right). 边外补白只
先来看这么一段代码: [code]div style=height:100px;width:200px; border: solid 1px black; div style=background-color:Red;margin-top: -5px mce_style=background-color:Red;margin-top: -5px a href=&