




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用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用于元素与内容之间的间隔,让内容(文字)与(包裹)元素之间有一段“呼吸距离”。举个例子吧12345678910111213141516171819用Margin还是用Padding.topwidth:160px; height:50px; background:#ccf;.middlewidth:160px; background:#cfc; border-top:1px solid #ccc;.middle .firstChildmargin-top:20px;.middle .secondChildmargin-top:15px; 我是firstChild,我只是想和我的父元素隔开点距离,这样看起来舒服。 我要和楼上隔开点的距离。恩,能与底边有点呼吸距离就更好了。我是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显然不是很好的选择。我们来试着这么修改:12345678910111213141516171819用Margin还是用Padding.topwidth:160px; height:50px; background:#ccf;.middle_2width:160px; background:#cfc; padding:20px 0px;.middle_2 .firstChild.middle_2 .secondChildmargin-top:15px; 我是firstChild,我只是想和我的父元素隔开点距离,这样看起来舒服 我是secondChild,我要和楼上隔开点的距离。恩,能与底边有点呼吸距离就更好了。我是firstChild,我只是想和我的父元素隔开点距离,这样看起来舒服我是secondChild,我要和楼上隔开点的距离。恩,能与底边有点呼吸距离就更好了。我们来看看这么写的好处吧:1.外观依旧良好,结构清晰也没有破坏布局。2.不会产生垂直外边距合并这样的问题。3.书写规范、代码量减少、重用性好。我们可以看到在middle_2中去除了不需要的border-top,改为更为实用的padding:20px 0,让middle_2中的内容有了足够的“呼吸空间”,以后还可以随时随地修改这个padding,让内容文字的“呼吸空间”增大或者缩小,随时随地只修改一个middle_2的padding就能搞定所有包裹元素与内部内容的规划。请注意这里是父元素应用padding,使得与其内容产生间隙,这是符合我们翻译为“补白”精髓(所以我一直喜欢称padding为“补白”而不是内边距),而padding也恰恰是在这儿最能体检他的价值。这个例子把第一个元素的margin-top去除,在父元素中应用padding。反过来,你会想,既然margin-top不好用,那么我第一个元素用padding-top不是也能达到效果么。恭喜你,你已经前进了一步了,的确使用padding-top即让第一元素与外包裹元素产生了呼吸距离,而且也不会出现所谓的垂直外边距重叠问题, 但是我依旧不推荐你这么做。为什么呢?我们来设想这么一个情况吧,假如有一天,你这个模块要产生变动,新需求要删除这个firstChild,替换为otherChild,会怎么样呢?新的需求要求我们新加一个otherChild,替换原来的firstChild:12345678910111213141516171819用Margin还是用Padding.topwidth:160px; height:50px; background:#ccf;.middle_3width:160px; background:#cfc;.middle_3 .otherChildfont-weight:bold; font-style: italic;.middle_3 .secondChildmargin-top:10px; 我是新来的otherChild,我也想和我的父元素隔开点距离,这样看起来舒服,咦?!为什么我是在顶部? 我是secondChild,我要和楼上隔开点的距离。恩,能与底边有点呼吸距离就更好了。我是新来的otherChild,我也想和我的父元素隔开点距离,这样看起来舒服,咦?!为什么我是在顶部?我是secondChild,我要和楼上隔开点的距离。恩,能与底边有点呼吸距离就更好了。发现问题了么?如果你把原先的firstChild给删除掉了,新来的元素根本就没有定义上边距或者上补白,那么他就会自然顶在头部,不是理想的效果。的确,你可以为了他新写一个css来让他距离头部多一点空隙,但是你该怎么写?直接改otherChild吗?如果其他页面里面也有otherChild那么你会把其他地方的otherChild布局打乱。恩,那么我用.middle_3 .otherChildpadding-top:10px;怎么样可以吧。恩,可以可以,可是你不觉得这么累吗?每次修改,都要增加这一个多余的代码就为了简简单单的隔开点距离,久而久之,你的css文件代码会臃肿不堪,可移植性大大削弱。每次开发的时候我一直对自己讲,你写的代码总有一天会被别的开发人员所替换、修改、更新。而一个优秀的前端写出的css不但在现在结构坚固并且还能为日后的开发人员提供方便。修改我的代码,改前改后的式样位置都一样,让之后的开发人员根本上避免接触到再次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年软件评测师考试的自我鉴定方法试题及答案
- 社会工作者的法律法规初级考试试题及答案
- 三务公开面试题及答案
- 2025年计算机领域中的Msoffice技术突破试题及答案
- 淘宝消费者考试题及答案
- 吸取经验教训的软件评测师试题及答案
- x光机培训测试题及答案
- 2025乙方代表聘任合同范本
- 德育原理试题及答案
- 多媒体设计形式的创新与发展试题及答案
- 安徽省亳州市各县区乡镇行政村村庄村名明细及行政区划代码
- 起重设备(塔吊)安全专项检查表
- 金融市场学课件(完整版)
- ECMO技术参数要求
- 预应力钢筋计算表格(自动版)
- 初始污染菌检测原始记录
- 安全标准化现场评审所需资料清单(共14页)
- 罪犯教育-身份意识和改造心态教育
- 胃肠减压技术操作流程.
- 工序能耗计算方法及等级指标
- 锯齿形板式热水冷却器的设计3.
评论
0/150
提交评论