注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梦幻雪冰

技在手,能在身,思在脑,从容过生活——陈能堡

 
 
 

日志

 
 

纵向外边距叠加 兼容问题  

2014-08-18 08:10:43|  分类: CSS兼容专题 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

纵向外边距叠加---梦幻雪冰

欢迎学习交流----梦幻雪冰
今天就给大家讲解下纵向外边据叠加问题,大家可以简单的理解外边距叠加指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者(谁大取谁)。
【第一种情况】兄弟之间元素的外边距,也就是说当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并,这是在网页布局中经常出现问题之一(还有双倍边距问题)
如图:
纵向外边距叠加 兼容问题 - 梦幻雪冰 - 梦幻雪冰
测试代码如下

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>梦幻雪冰</title>
<link rel="stylesheet" href="reset.css" type="text/css">
<style>
.con {
width: 700px;
height: 400px;
margin-bottom: 20px;
background: #fcf;
}
.box {
width: 700px;
height: 400px;
margin-top: 10px;
background: #f00;
}
</style>
</head>
<body>
<div class="wrap clearfix">
<div class="con">纵向外边据叠加-梦幻雪冰</div>

<div class="box">纵向外边据叠加-梦幻雪冰</div>

</div>
</body>
</html>

【第二种情况】父子之间元素的外边距,也就是说当一个元素包含在另一个元素中时,它们的上和/或下外边距也会发生合并。(这样本身就有问题,所以网页布局中采用父子用padding,兄弟之间用margin的用法)
如图:
欢迎学习交流----梦幻雪冰
纵向外边距叠加 兼容问题 - 梦幻雪冰 - 梦幻雪冰
测试代码如下

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>梦幻雪冰</title>
<link rel="stylesheet" href="reset.css" type="text/css">
<style>
.wrap {
width: 700px;
height: 420px;
margin-top: 30px;
background: #999;
}
.con {
width: 700px;
height: 300px;
margin-top: 20px;
background: #fcf;
}
</style>
</head>
<body>
<div class="wrap clearfix">
<div class="con">纵向外边据叠加-梦幻雪冰</div>

</div>
</body>
</html>

【第三种情况】外边据也可以自身合并(这种基本上碰不到,只要了解就行了)
如图:
欢迎学习交流----梦幻雪冰
纵向外边距叠加 兼容问题 - 梦幻雪冰 - 梦幻雪冰
 测试代码如下

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>梦幻雪冰</title>
<link rel="stylesheet" href="reset.css" type="text/css">
<style>
.con-bot,
.con-top {
width: 400px;
height: 400px;
background: #999;
}
.con {
margin: 10px 0 30px 0;
}
</style>
</head>
<body>
<div class="wrap clearfix">
<div class="con-top">纵向外边据叠加-梦幻雪冰</div>
<div class="con"></div>
<div class="con-bot">纵向外边据叠加-梦幻雪冰</div>
</div>
</body>
</html>

【第四种情况】如果这个外边距遇到另一个元素的外边距,它还会发生合并
纵向外边距叠加 兼容问题 - 梦幻雪冰 - 梦幻雪冰
 测试代码如下

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>梦幻雪冰</title>
<link rel="stylesheet" href="reset.css" type="text/css">
<style>
.con-top {
width: 400px;
height: 400px;
margin-top: 30px;
background: #999;
}
.con-bot {
width: 400px;
height: 400px;
background: #999;
}
.con {
margin-top: 30px;
margin-bottom: 30px;
background: #fcf;
}
</style>
</head>
<body>
<div class="wrap clearfix">
<div class="con-top">纵向外边据叠加-梦幻雪冰</div>
<div class="con"></div>
<div class="con-bot">纵向外边据叠加-梦幻雪冰</div>
</div>
</body>
</html>

原因:引发这种原因是由CSS设计时造成的,CSS标准的设计者考虑到开发要对段落进行控制。第一个段落上面的空间等于段落的上外边距。(p标签margin:10px)如果没有外边距合并,后续所有段落之间的外边距都将是相邻上外边距和下外边距的和(这样margin就是20px)。这意味着段落之间的空间是页面顶部的两倍。如果发生外边距合并,段落之间的上外边距和下外边距就合并在一起,这样各处的距离就一致了(margin还是10px,这就是发生叠加的原因了)。
还不理解的可以看下图来理解下为什么会进行外边叠加
纵向外边距叠加 兼容问题 - 梦幻雪冰 - 梦幻雪冰

以上都是边距叠加的情况,那么如何解决这种兼容问题呢?
只有普通文档流中块元素的垂直外边距才会发生外边距叠加。行元素、浮元素或绝对定位之间的外边距不会叠加。所以我们可以用浮动来解决纵向外边距叠加问题。

 
欢迎学习交流----梦幻雪冰           声明:图片来源于--
w3school
 
  评论这张
 
阅读(120)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017