首页 > 其他 > 详细

如何解决外边距叠加的问题?

时间:2015-11-01 12:34:25      阅读:209      评论:0      收藏:0      [点我收藏+]

第一种

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="Author" content="胡超">
<title>super胡</title>
<style>
#a1{
width:200px;
height:200px;
border:1px solid red;

margin-bottom:20px;

}
#a2{
margin-top:20px;
width:100px;
height:100px;
display:inline-block;/*或者绝对定位(position:absolute)或者是浮动元素*/
border:1px solid black;

}

</style>
</head>
<body>
<div id="a1">
</div>
<div id="a2">
</div>

</body>

第二种

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="Author" content="胡超">
<title>super胡</title>
<style>
#container{
overflow:hidden;

zoom:1;
}
#a1{
border:1px solid red;
width:200px;
height:200px;
background:green;
margin-bottom:20px;
}
#a2{
border:1px solid red;
width:200px;
height:200px;
background:red;
margin-top:20px;
}
</style>
</head>
<body>
<div id="container">
<div id="a1">
</div>
</div>
<div id="container">
<div id="a2">
</div>
</div>
</body>
</html>



如何使元素上下margin不折叠呢?

1.浮动元素、inline-block 元素、绝对定位元素的 margin 不会和垂直方向上其他元素的 margin 折叠(注意这里指的是上下相邻的元素)
2.创建了块级格式化上下文的元素,不和它的子元素发生 margin 折叠
 
第二种方法:把这两个 <div> 分别放进两个建立了 BFC (IE7- 触发 hasLayout)的父级容器里.
要建立 BFC 的不是这两个 <div> 而是它们所在的父级容器.


触发block formatting context即可,触发的方法:
1. float不为none
2. overflow不为visible
3. display设为‘table-cell’, ‘table-caption’, 或‘inline-block’
4. position既不是static也不是relative
5. zoom:1, IE的hasLayout特性会建立一个新的block formatting context

如何解决外边距叠加的问题?

原文:http://www.cnblogs.com/12606huchao/p/4927388.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!