深山工作室

深山工作室 >

DIV+CSS奇怪问题之边界(margin)叠加

边界叠加是一个相当简单的概念。但是,在实践中对网页进行布局时,它会造成许多混淆。简单地说,当两个垂直边界相遇是,它们将形成一个边界,这个边界的高度等于两个边界高度中的较大者。

例如:我们在网页里加入两个层

以下为详细代码

两个层都设置为100宽 100高。第一个层背景色为红色,下边界(margin-bottom)为20 px.。第一个层背景色为黄色,上边界(margin-top)为30 px.。那么这两个层之间的距离是不是20+30=50px呢?其实不然,他们之间的距离应是他们边界中最大一个值,也就是30px。效果如图:

另外,当一个元素包含在另一个元素中时,它们的顶或底边界也发生叠加。比如:我们把层b放在a层内。
即<div id="a"><div id="b"></div></div>。然后为他们添加样式。

以下为详细代码

我们把a层设置为200*200大小,并为他添加上边界(margin-top:20px)为20px。B层样式不改变,上边界为30px。那么,这里b层距离浏览器是不是20+30=50px呢?答案肯定不是。因为发生了边界叠加,因此b层距离浏览器的距离仍然30px即(20px  30px 中最大的)。那么,a层距离浏览器的距离是20px吗?不是,而是30px.(也是边界中最大的一个)。所以,此时a b层距离浏览器的距离都是30px。 效果如图(火狐)

这就是所谓的边界叠加。但在IE里面支持的不够好,大家可以比较火狐和IE的效果差异。

注意:
1、只有普通文档流中的垂直边界才会叠加。浮动、绝对定位不会叠加
2、只有元素没有设置的padding border时,才发生边界叠加。
3、只有垂直边界才会发生叠加,水平边界不叠加。

如何消除边界叠加:
边界叠加的大多数问题可以通过添加透明边框或1px的补白来修复。
1.外层 padding
2.透明边框 border:1px solid transparent;
3.绝对定位 postion:absolute:
4.外层DIV overflow:hidden;
5.内层DIV  加float:left; display:inline;
6.外层DIV有时会用到zoom:1;

前一页:在DIV+CSS里面IE5.5的专用标签
后一页:CSS关于box(盒模式)的一系列问题详解
相关阅读
网页小键盘/软键盘
来自网易空间排行宽度可以变化的选项卡
css解决中英混合链接下划线不对齐问题
字体放大效果,字体[大][中][小]
CSS教程:弄懂闭合浮动元素
PS常用密技
div默认高度根据内容自动适应高度
DIV+CSS奇怪问题之边界(margin)叠加
更多>>DIV+CSS相关信息
jquery设置或获取修改classname
利用css3.0写出一个音乐播放的唱片碟盘的效果
利用css中的scale()实现放大缩小效果
利用background-color:#000000a8在背景颜色16进制代码之后加字母加上数字让背景色透明
css背景使用base64编码或者将base64编码放在img图片标签中
更多>>最新添加
dw里面查找替换使用正则删除sqlserver里面的CONSTRAINT
Android移动端自动化测试:使用UIAutomatorViewer与Selenium定位元素
抖音直播音挂载小雪花 懂车帝小程序
javascript获取浏览器指纹可以用来做投票
火狐Mozilla Firefox出现:无法载入您的Firefox配置文件 它可能已经丢失 或是无法访问 问题解决集合处理办法