1.外边距介绍
外边距是在盒子边框外的边距,除了不会撑开盒子意外,其他所有语法都和padding相同,简写的规则也一样。
注意点
虽然margin不会撑开盒子,但是子级的margin会影响到父亲的位置,原因是:外边距的相对位置是以border边框或者内边距padding为准的,如果父元素没有边框或者没有内边距则会和共用body的位置,所以如果想子元素以父元素为坐标系,则需要给父元素添加边框或者设置内边距或者设置overflow:hidden,同时也因为margin的合并特性导致的父元素塌陷问题,下面我们就介绍这个性质。
简单面试题
如何让块级元素盒子在浏览器中,水平居中。
答案:将左右外边距的值 设置为 auto即可,最常用的写法为 margin: 0 auto,0代表上下为0px,auto则是左右,这是复合写法的规则。
好家伙,终于明白为什么网页上要写 margin: 0 auto了,就是为了水平居中。
而对于行内元素或者行内块元素 给其父元素设置 text-align:center即可
2.外边距合并特性(重要)
第一种垂直合并是比较简单的,记住只设置一个方向的margin值就行
第二种比较重要,是开发中非常常见的问题,之前也说了虽然margin不会撑开盒子,但是子级的margin会影响到父亲的位置,原因是:外边距的相对位置是以border边框或者内边距padding为准的,如果父元素没有边框或者没有内边距则会和共用body的位置,所以如果想子元素以父元素为坐标系,则需要给父元素添加边框或者设置内边距或者设置overflow:hidden。并且还有父元素塌陷问题,如果子元素的margin大于父元素,则会覆盖掉父元素的margin值。
div {
/* 1.设置边框 */
border: 1px solid transparent;
/*transparent代表透明边框*/
/* 2.设置边距 */
padding: 1px;
/* 3.overflow */
overflow: hidden;
}
最常用的方式就是overflow:hidden了,这个方法不会影响盒子的大小, 而另外两种都会。