首页 > 网页教程 > CSS > CSS进阶:用Margin还是用Padding?

CSS进阶:用Margin还是用Padding?

时间:2011-06-21    作者:HiCSS   来源:海玉的博客

用margin还是用padding这个问题是每个学习CSS进阶时的必经之路。

CSS边距属性定义元素周围的空间。通过使用单独的属性,可以对上、右、下、左的外边距进行设置。也可以使用简写的外边距属性同时改变所有的外边距。——W3School
边界(margin):元素周围生成额外的空白区。“空白区”通常是指其他元素不能出现且父元素背景可见的区域。——CSS权威指南

padding称呼为内边距,其判断的依据即边框离内容正文的距离,而我喜欢CSS权威指南解释的“补白”(或者叫“留白”),因为他很形象。补白(padding):补白位于元素框的边界与内容区之间。很自然,用于影响这个区域的属性是padding。——CSS权威指南

关于什么时候用margin什么时候用padding,网上有许许多多的讨论,大多数似乎讨论到点上面,却又有些隔靴搔痒的感觉,总是答不到点上。而且margin和padding在许多地方往往效果都是一模一样,而且你也不能说这个一定得用margin那个一定要用padding,因为实际的效果都一样,你说margin用起来好他说padding用起来会更好,但往往争论无果。根据网上的总结归纳大致发现这几条还是比较靠谱的:

何时应当使用margin:

  • 需要在border外侧添加空白时。
  • 空白处不需要背景(色)时。
  • 上下相连的两个盒子之间的空白,需要相互抵消时。如15px + 20px的margin,将得到20px的空白。

何时应当时用padding:

  • 需要在border内测添加空白时。
  • 空白处需要背景(色)时。
  • 上下相连的两个盒子之间的空白,希望等于两者之和时。如15px + 20px的padding,将得到35px的空白。

个人认为:margin是用来隔开元素与元素的间距;padding是用来隔开元素与内容的间隔。margin用于布局分开元素使元素与元素互不相干;padding用于元素与内容之间的间隔,让内容(文字)与(包裹)元素之间有一段“呼吸距离”。

举个例子吧

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>用Margin还是用Padding</title>
  <style>
  .top{width:160px; height:50px; background:#ccf;}
  .middle{width:160px; background:#cfc; border-top:1px solid #ccc;}
  .middle .firstChild{margin-top:20px;}
  .middle .secondChild{margin-top:15px;}
  </style>
  </head>
  <body>
  <div class="top"></div>
  <div class="middle">
<div class="firstChild">我是firstChild,我只是想和我的父元素隔开点距离,这样看起来舒服。</div>
<div class="secondChild">我要和楼上隔开点的距离。恩,能与底边有点呼吸距离就更好了。</div>
</div>
</body>
</html>

上面这个效果看起来很不错,达到了我们需要实现的目标。然而,我们细细查看下这个代码,对照下我们上文所说的规则,firstChild用了margin-top:20px来隔开父元素与他的距离,secondChild也用margin-top:15来隔开他与firstChild的距离,咋看之下挺符合我们所说的margin是用来隔开元素与元素的间距。但是他符合我们所说的margin用于布局分开元素使元素与元素互不相干吗?

相关推荐
CSS:清除多余的标签让代码更加有意义
DIV+CSS布局两列右列宽度自适应布局的不同实现方法
CSS排版中常遇到的五个问题及解决办法
CSS网页布局有关中文排版的九个技巧
详解如何用div+css模拟表格对角线
Firefox与IE浏览器在CSS样式表中的差异
加一段代码让IE6支持hover伪类效果
用CSS来控制字符长度和显示长度
CSS代码不同书写风格的优缺点
如何使一个DIV层居中于浏览器中?
正确理解CSS规则的优先级算法
创建高效CSS代码的五个好习惯
最新全面兼容ie6,ie7,ie8,ff的CSS HACK写法
理解CSS的查找匹配原理,打造简洁高效的CSS代码
掌握跨浏览器兼容的CSS代码编写准则
21个令人惊叹的CSS技术(案例)展示
CSS框架到底有那些优点与缺点?
如何使用CSS控制网页打印页面格式?
深入理解CSS的margin属性(外边距)
CSS中30个最常用的选择器,你学会了吗?
WEB前端开发应该注意的问题8点(原创技巧)
xhtml+css 复杂的视觉效果解决方案与技巧(原创技巧)
CSS新手入门教程:CSS代码编写须注意的八大细节
资深seo利用css样式作弊手法全解
CSS新手教程:30个CSS常见问题的分析及解决方法
10种导致CSS布局页面错乱的解决方法分享
css教程:解决float属性的元素父元素高度不能自适应
CSS教程:清理浮动简洁有效的方式分享
CSS Sprites(CSS精灵)技术及其优化经验分享
IE6下文字或图片神秘消失的原因及解决方法分享
CSS相对定位实现div容器绝对居中的简单方法分享
8种CSS清除浮动的方法优缺点分析
高效CSS开发需要注意的要点以及提升性能的做法
CSS3实现透明边框的方法分享
分析W3C官网超链接交互样式设计与实现方法
CSS新手教程:学习CSS页面布局和加载流程

精彩推荐

热门教程