css网页布局用Margin还是用Padding
用Margin还是用Padding对于各位来讲量一个比较有学问的东西了我们对于用Margin还是用Padding来给各位进入一下深入的分析,具体如下:
用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="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用Margin还是用Padding</title>
<style>
{width:160px; height:50px; background:#ccf;}
le{width:160px; background:#cfc; border-top:1px solid #ccc;}
le tChild{margin-top:20px;}
le ndChild{margin-top:15px;}
</style>
</head>
<body>
<p class="top"></p>
<p class="middle">
<p class="firstChild">我是firstChild,我只是想和我的父元素隔开点距离,这样看起来舒服。</p>
<p class="secondChild">我要和楼上隔开点的距离。恩,能与底边有点呼吸距离就更好了。</p>
</p>
</body>
</html>
我是firstChild,我只是想和我的父元素隔开点距离,这样看起来舒服。
我是secondChild,我要和楼上隔开点的距离。恩,能与底边有点呼吸距离就更好了。
上面这个效果看起来很不错,达到了我们需要实现的目标。然而,我们细细查看下这个代码,对照下我们上文所说的规则,firstChild用了margin-top:20px来隔开父元素与他的距离,secondChild也用margin-top:15来隔开他与firstChild的距离,咋看之下挺符合我们所说的margin是用来隔开元素与元素的间距。但是他符合我们所说的margin用于布局分开元素使元素与元素互不相干吗?
这里我想说的是NO,firstChild同middle属于一种父子元素关系,又是一种包裹元素与内容的关系,他们之间从拟人化的角度来讲,不应该是老死不相干的局面。我们再来看我们为什么要让firstChild与他的'父元素隔开的距离,从表现的角度上来看,文字与边靠的太近,肯定不好看。让文字与元素边隔开的距离,既美观,又使得文字有了足够的“呼吸空间”,方便阅读,这恰恰符合padding用于元素与内容之间的间隔让内容(文字)与(包裹)元素之间有个“呼吸距离”。
我们再来看,firstChild使用margin-top引发了垂直外边距合并的隐患,middle如果不加一个类似border-top:1px solid #ccc的话标准浏览器下就会呈现子元素顶了父元素margin隐患(这是个垂直外边距合并问题,可以查看不要告诉我你懂margin,这篇文章内有详细介绍)。可见这个时候margin显然不是很好的选择。
我们来试着这么修改:
代码如下复制代码
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用Margin还是用Padding</title>
<style>
{width:160px; height:50px; background:#ccf;}
le_2{width:160px; background:#cfc; padding:20px 0px;}
le_2 tChild{}
le_2 ndChild{margin-top:15px;}
</style>
</head>
<body>
<p class="top"></p>
<p class="middle_2">
<p class="firstChild">我是firstChild,我只是想和我的父元素隔开点距离,这样看起来舒服</p>
-
万恶的function在javascript中的运用实例分析
javascript中最有特色而又让你困惑的function算一个了下面看一下常用操作复制代码代码如下:functiondoit(){.....}doit();javascript中的函数我们可以把它当作方法使用复制代码代码如下:varobj=newObject();=function(){.....}();而function实际上就是对象(即F...
-
浅谈jquery 注意事项与常用语法
1、关于选择器中含有特殊符号选择器中含有".","#","(","]"等特殊字符,根据W3C的规定,属性值中是不能含有这些特殊字符的,例如:复制代码代码如下:bb如果按照普通的方式来获取,例如:复制代码代码如下:$("#id#b");$("#id[1]");以上代码不能正确获取到元素,正确的写法如下:复...
-
javascript操作select元素案例分析
本文实例讲述了javascript操作select元素的.用法。分享给大家供大家参考。具体分析如下:这里熟悉一下js对select元素的操作,html页面中建立一个form,其中包含一个select元素和submit按钮。当选择select中某一项时改变其文字,当select中所有项的文字都改变后,重新恢...
-
css经典教程
css经典教程1有些习惯显得尤为重要,今天与您分享六个CSS习惯。因为习惯其实是会变的,所以只能写“最近”的。这些习惯都跟技术无关,如果不遵守,也不会出错。但是我觉得良好的习惯会体现一个人的素质。我们在中向大家介绍过很多CSS经验与技巧,这些东西都发布在/css/...
相关文章
- My Happy Times During Winter Vacation初中英语作文
- A Lifeguard at Johns Beach Saved a Drowning Child,A Lifeguar英语作文
- Unit six Opening and Closing Ceremonies口译材料
- 奥运英语作文:中国跳水队(Diving into Gold: Chinas Dream Team
- 关于女性的英语作文:Inspiring women leading the way
- 初中英语写作范文:My Happy Times During Winter Vacation
- 英语口语:Teaching and Learning Responsibility
- discriminating是什么意思
- Passage Eighteen (Strictly Ban smoking)英语阅读理解
- 2017小学英语听力Improving Reading Skills练习