深⼊理解css中的margin属性
之前我⼀直认为margin属性是⼀个⾮常简单的属性,但是最近做项⽬时遇到了⼀些问题,才发现margin属性还是有⼀些“坑”的,下⾯我会介绍margin的基本知识以及那些“坑”。这篇博⽂主要分为以下⼏个部分:
第⼀部分:margin--基础知识
要介绍margin的基础知识,我们不可回避地要谈到css盒⼦模型(Box Model),⼀般⽽⾔,css盒⼦模型是⽤来设计和布局的。它本质上是⼀个盒⼦,包括:外边距(margin)、边框(border)、内边距(padding)以及最中间的内容(content)。下图即为盒⼦模型(这⾥只谈W3C规范的标准盒模型,⽽不谈IE5和IE6在怪异模式中使⽤的⾮标准的盒⼦模型):
我们要介绍的margin在最外层,因为margin(外边距)⼀定是透明的,所以它可以⽤来使得不同的盒⼦之间留有⼀定的间隙从⽽达到布局美观等效果。从上⾯的盒⼦模型中我们可以看到,margin在四周均存在,我们可以使⽤margin-top、margin-right、margin-bottom、margin-left分别设置这四个⽅向的margin值。(注:由于这部分知识较为基础,所以我不再在这部分不做更多介绍)
第⼆部分:margin--在同级元素(⾮⽗⼦关系)之间应⽤
这⼀部分主要介绍⽔平⽅向和竖直⽅向的外边距的合并问题。
(1)⽔平⽅向的外边距合并
两个⽔平⽅向的盒⼦相遇,那么最终两者之间的距离为左边盒⼦的右外边距和右边盒⼦的做外边距之和。 例1: 代码如下:
display: inline-block; margin-right: 50px; font-size: 20px; }
.right{
width: 100px; height: 100px;
background: yellow; display: inline-block; margin-left: 50px; font-size: 20px; }
宽为100px,右边距为50px
宽为100px,左边距为50px