无意中在蓝色理想中看到一篇《不要告诉我你懂margin》,有感,写出来的。对于作者致敬,请大家帮忙指正。

你真的了解margin吗?你知道margin有什么特性吗?你知道什么是垂直外边距合并?margin在块元素、内联元素中的区别?什么时候该用 padding而不是margin?你知道负margin吗?你知道负margin在实际工作中的用途吗?常见的浏览器下margin出现的bug有哪些?……(引用作者原话)

我们写css免不了的要与margin这个属性打交道,而且有的时候还要借助margin来修复因IE的bug,margin是外边距,我们都知道的。我给它的定义是:他具体的作用是对父元素的边框内出现距离本身的距离定义。css权威指南是这样说的:边界,元素周围生成额外的空白区。“空白区”通常是指其他元素不能出现且父元素背景可见的区域。w3cschool则是:CSS 边距属性定义元素周围的空间。通过使用单独的属性,可以对上、右、下、左的外边距进行设置。也可以使用简写的外边距属性同时改变所有的外边距。

大家已经明白了我对它的称呼——外边距,接下来以外边距来称呼。

margin的特性(盗用作者标题)

margin,是透明的,在它设置的值的范围内,父元素的背景色或背景图片均不受影响,能够完整的呈现给用户看到。margin属性通过单独的属性对其上、右、下、左依次进行赋值,我们常见的有margin:10px; OR margin:10px 20px; OR margin:10px 20px 10px 20px;但是你知道:margin:10px 15px 3px;什么意思吗?你以为它的表达意思是:margin:10px 15px 3px 0px;吗??那我来告诉你,错误:它的表达意思是margin:10px 15px 3px 15x;呵呵!great。这个才是正确的。在实际应用中,或者阅读别人代码的时候不要理解错误或者,没有看到过这个,就随便猜测作者的想法。

margin垂直外边距不兼容标准?

实际工作中,垂直外边距合并问题常见于第一个子元素的margin-top会顶开父元素与父元素相邻元素的间距,而且只在标准浏览器下 (FirfFox、Chrome、Opera、Sarfi)产生问题,IE下反而表现良好。例子可以查看下面代码(IE下表现“正常”,标准浏览器下查看出现“bug”)有代码有真相:

 1 <html xmlns="http://www.w3.org/1999/xhtml">
 2 <head>
 3 <title>垂直外边距合并</title>
 4 <style>
 5 .top{width:160px; height:50px; background:#ccf;}
 6 .middle{width:160px; background:#cfc;}
 7 .middle .firstChild{margin-top:20px;}
 8 </style>
 9 </head>
10  
11 <body>
12 <div class="top"></div>
13 <div class="middle">
14   <div class="firstChild">我其实只是想和我的父元素隔开点距离。</div>
15   <div class="secondChild"></div>
16 </div>
17 </body>
18 </html>

你来运行一下是不是感觉,这个在IE中显示正常?而在其他对css2高度兼容的firefox下显示异常??我来告诉你,这是因为IEIE的hasLayout渲染导致了这个“表现良好”的外观。而其他标准浏览器则会表现出“有问题”的外观。如果按照css规范来说,IE的表现是错误的,而FirfFox、Chrome、Opera、Sarfi等主流浏览器则解析的符合css规范。

举个例子来说:父元素的第一个子元素的上边距margin-top如果碰不到有效的border或者padding.就会不断一层一层的找自己 “领导”(父元素,祖先元素)的麻烦。只要给领导设置个有效的 border或者padding就可以有效的管制这个目无领导的margin防止它越级,假传圣旨,把自己的margin当领导的margin执行(虽然它的值比“真龙”的值大)。

用Margin还是用Padding

对于这个问题,很多人问过我,他们说,padding和margin为什么要分开用,它们的区别也不大,达到的效果也不差,为什么它们是两种定义?很多人会容易弄混淆,特别是新手,一般都是新手问我这个问题。

下面我们来说下,为什么要区别来用,padding和margin:

当我们想要在子元素使用背景,而父元素不适应背景,达到图片“顶住”,文字“不顶住”间隔一段距离的时候要用padding;

当我们让子元素边框要顶住父元素,而覆盖父元素背景图片或背景色的时候使用padding;

当我们希望让子元素和父元素有点距离,但不影响父元素背景图片展示的时候用margin;

当子元素有边框而父元素无边框的时候,它们需要产生距离的时候用margin;

margin在内联元素中的表现也是同理。以上为我对margin属性的理解,还有一个margin的bug我就不在这里阐述了,因为网上已经有很多有识之士,把margin的bug详细的列了出来。在这里,向大家祝福,端午节快乐!

(喜欢学习的和想与我探讨各种web知识的留下你的邮箱或联系方式,或者跟我发邮件747850255@qq.com转载请自觉附上转载地址,来自博客园“明年开奥迪”)

转载于:https://www.cnblogs.com/jiawl/archive/2011/06/05/2073143.html

来自web标准margin的嘲笑,你了解我吗?相关推荐

  1. 读WEB标准和网站重构后的一些感想

    这是我以前写的一篇博客, 感觉比较有用,原帖离得较远,在这转一下........... 昨晚,读了<<WEB标准和网站重构>>这一篇文章后(其实是一个讲座的文件),感触还是比较 ...

  2. IE7的web标准之道——7:(修正)float双倍margin bug

    IE7的web标准之道 IE历来被web标准的拥护者所诟病,而当FireFox横空出世以后,更多的网页制作者开始关注web标准设计.看着FireFox的市场占有率不停的上升,微软终于推出了IE7.但I ...

  3. 伴随着Web标准发展

    内容 简介 历史 Web标准 结构和表现 (X)HTML(可扩展超文本置标语言) CSS(层叠式样式表) 可访问性 URLs(页面地址) 参考资料 专业词汇 1. 简介 本文阐述了Web标准是如何使一 ...

  4. 用Web标准进行开发

    用Web标准进行开发 建议与好的实例 原作:Roger Johansson, 456 Berea Street (翻译:x5, x5studio) Last updated 2005-01-15 Th ...

  5. 用Web标准进行开发[转]

    用Web标准进行开发[转] 用Web标准进行开发 建议与好的实例 原作:Roger Johansson, 456 Berea Street (翻译:x5, x5studio) Last updated ...

  6. [转]用Web标准进行开发

    用Web标准进行开发 建议与好的实例 原作:Roger Johansson, 456 Berea Street (翻译:x5, x5studio) Last updated 2005-01-15 Tr ...

  7. document.all与WEB标准

    1.DOM WEB标准现在可真是热门中热门,不过下面讨论的是一个不符合标准的document.all[].DOM--DOCUMENT OBJECT MODEL文档对象模型,提供了访问文档对象的方法.例 ...

  8. web标准的商业价值

    web标准的商业价值 作者:阿捷 2004-7-3 0:37:26 原文来自:adaptivepath.com 作者介绍:Jeffrey Veen是AdaptivePath.com的合伙人之一,专门研 ...

  9. 你应该关注web标准的真正原因

    你应该关注web标准的真正原因 作者:阿捷 2004-7-4 2:28:39 原文作者:Andrei Herasimchuk 原文出处:designbyfire.com 原文发表时间:2004年6月1 ...

最新文章

  1. FD.io/VPP — VPP 的安装部署
  2. python Hbase Thrift pycharm 及引入包
  3. LDA入门级学习笔记
  4. SSM整合——Spring+SpringMVC+MyBatis整合
  5. 帝国cms文章页调用当前文章URL如何操作?
  6. 产品经理日常数据分析工作
  7. C#/WPF程序开机自动启动
  8. Scrapy使用问题整理(转载)
  9. php获取表所有数据类型,php excel 导入 导入三级分类 表格应该怎么设计才能得到想要的数据格式?...
  10. Linux: 传参数给alias
  11. Bootstrap3 弹出提示插件的方法
  12. 单片机 c语言 宏程序,宏程序学习的几点心得.doc
  13. LTE学习:天线端口数目和物理天线数目关系
  14. C#:“System.Web.Mvc.Controller.File(byte[], string)”是一个“方法”,这在给定的上下文中无效
  15. MagicDraw-状态机图
  16. 非科班生的Android秋招求职经历
  17. [培养锻炼能力][耳机]耳机线断裂维修经验
  18. Neo4j - CQL使用
  19. python二元一次方程组用鸡兔同笼的思路来写编程_python二元一次方程组用鸡兔同笼的思路来写编程_《应用二元一次方程组——鸡兔同笼》......
  20. CentOS中使用VeraCrypt(一):安装及创建整个加密硬盘

热门文章

  1. UVA 512 Spreadsheet Tracking
  2. DHCP : 网络世界身份的获取
  3. django【orm操作】
  4. Fiddler插件开发 - 实现网站离线浏览功能
  5. LeetCode 475. Heaters
  6. Python之路:线程池
  7. UI-- Empty Application 新建空工程
  8. PAT (Basic Level) Practise:1037. 在霍格沃茨找零钱
  9. OnClientClick和OnClick同时使用!
  10. 各品牌类型电脑BOIS中USB模式启动热键