css之margin

margin的塌陷现象

标准文档流中,竖直方向的
margin不叠加,以较大的为准。

如果不在标准流,比如盒子都浮动了,那么两个盒子之间是没有塌陷现象的:

4.2 盒子居中margin:0 auto;

margin的值可以为auto,表示自动。当left、right两个方向,都是auto的时候,盒子居中了:

1 margin-left: auto;

2 margin-right: auto;

简写为

1 margin:0 auto;
注意:
1) 使用
margin:0 auto;的盒子,必须有width,有明确的width

2) 只有标准流的盒子,才能使用margin:0 auto;居中。
也就是说,当一个盒子浮动了、绝对定位了、固定定位了,都不能使用
margin:0 auto;

3)
margin:0 auto;是在居中盒子,不是居中文本。文本的居中,要使用
text-align:center;
1 margin:0 auto;   → 让这个div自己在大容器中居中。

2 text-align: center;  → 让这个div内部的文本居中。

text-align还有

1 text-align:left;     没啥用,因为默认居左

2 text-align:right;    文本居右

4.3 善于使用父亲的padding,而不是儿子的margin

如果父亲没有border,那么儿子的margin实际上踹的是“流”,踹的是这“行”。所以,父亲整体也掉下来了

这个p有一个margin-top踹父亲,试图将自己下移

1   <div>
2       <p></p>
3   </div>

结果:

margin这个属性,本质上描述的是兄弟和兄弟之间的距离; 最好不要用这个marign表达父子之间的距离。

所以,我们一定要善于使用父亲的padding,而不是儿子的margin。

4.4 关于margin的IE6兼容问题

IE6双倍margin bug

当出现连续浮动的元素,携带和浮动方向相同的margin时,队首的元素,会双倍marign。

<ul>
  <li></li>
  <li></li>
  <li></li>
</ul>

解决方案:

1)使浮动的方向和margin的方向,相反。所以,你就会发现,我们特别喜欢,浮动的方向和margin的方向相反。并且,前端开发工程师,把这个当做习惯了。

float: left;
margin-right: 40px;

2)使用hack(没必要,别惯着这个IE6)
单独给队首的元素,写一个一半的margin

 <li class="no1"></li>
 ul li.no1{
    _margin-left:20px;
 }

IE6的3px bug

解决办法:

不用管,因为根本就不允许用儿子踹父亲。所以,如果你出现了
3px bug,说明你的代码不标准。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,863评论 1 92
  • 互联网前端分为三层:结构,样式,行为 HTML 超文本标记语言 从语义的角度上描述页面的结构CSS 层叠样式...
    AnnQi阅读 992评论 0 1
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,917评论 0 6
  • 标准文档流 一.标准流中的微观现象: 1>空白折叠现象 2>高矮不齐,底边对齐如果又有图片且图片参差不齐的,又有文...
    flowerflower阅读 10,369评论 2 16
  • 前些天,有一个朋友外出一周,就把他家的一条傻狗寄养在我地方。我第一次养狗,又紧张又兴奋,开始都不敢动它,完全都是要...
    毛敏乐阅读 409评论 0 1