css特性:空白外边距互相叠加

来源:Mr.Think 时间:2010-06-21 10:53:00 

空白双边距是一个极容易误解的CSS特性.它不是CSS的bug,但如果我们一旦误解,将会给你带来很多麻烦.

先看如下demo代码:


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>空白边距叠加demo@Mr.Think</title>
<style>
body{width:300px; font-family:'微软雅黑'; font-size:1em; text-indent:10px; line-height:1.25}
div{background:#a40000;margin:10px}
div p{background:#eee;margin:15px}
</style>
</head>
<body>
<div><p>空白边距叠加demo@Mr.Think</p></div>
</body>
</html> 

这是一个div元素内嵌套p的简单样例,先别复制保存为html测试,在你看完上面的代码后,你是否以为它出为你呈现如下图的效果?

好,现在你可以复制上面代码,保存到本地,然后在浏览器中打开.你会惊讶的发现,它呈现给你的效果是这样的:

为什么会这样呢?按CSS中,对于有块级子元素的元素计算高度的方式,如果元素没有垂直边框和填充,那其高度就是其子元素顶部和底部边框边缘之间的距离.故,子元素的顶部和底部空白边就突出到元素的外围了.p元素的15px外边距与div元素的10px的外边距形成一个单一的15px垂直空白边,另外,形式的这个空白边并非为div所包围,而是呈现在div的外围.所以,我们看到了第二张效果图.
如何解决?本人比较推荐两种解决方式:

其一,为外围元素定义透明边框.具体到本例,即在样式div中加入border:1px solid transprent;

其二,为外围元素定义内边距填充..具体到本例,即在样式div中加入padding:1px

另外,还可以通过外围元素绝对定位,或者定义子元素浮动等方式实现.

标签:CSS,bug,空白
0
投稿

猜你喜欢

  • SQL提供的进行数据传输的实用程序—BCP

    2009-01-23 13:45:00
  • sql server对字段的添加修改删除、以及字段的说明

    2012-01-05 18:50:52
  • 使用ASP常见问题解答

    2007-10-11 14:07:00
  • 订单转化率之回访确认

    2009-08-24 12:40:00
  • DW MX 的快键一览表

    2009-07-21 12:47:00
  • JavaScript 数组的 uniq 方法

    2007-12-07 18:28:00
  • 网页设计标准尺寸

    2008-06-15 15:21:00
  • 网易网站设计(思想)

    2009-03-27 17:51:00
  • 如何使用表格来储存数据库的记录?

    2010-05-16 15:14:00
  • 简写一个的lightbox显示隐藏层效果(兼容)

    2010-07-23 20:02:00
  • 在Internet Explorer中正确使用MSXML

    2009-02-22 18:41:00
  • 关于设计品质保证(DQA)的几点想法

    2007-11-16 16:55:00
  • 基于display:table的CSS布局

    2008-10-30 10:38:00
  • XML十项特点

    2008-04-05 13:49:00
  • asp通过数组给您的文件列表排序

    2007-10-22 13:45:00
  • MySQL 缓存 Query Cache

    2010-03-13 17:06:00
  • asp如何读取一个文件内容?

    2009-11-19 17:23:00
  • 从浏览器想开去

    2008-07-29 12:52:00
  • IE8的一些CSS hack

    2008-03-17 13:08:00
  • 快速掌握ASP+Access数据库的18条安全法则

    2008-11-28 15:08:00
  • asp之家 网络编程 m.aspxhome.com