margin为负值怎么走?

203 阅读1分钟

1. margin是盒子的一部分

-margin-1.png ​ 这是chrom控制器下的一个和简单的盒模型,可以看出,margin连同border、padding、content在内都属于盒子的一部分。

​ 由此,很容易判断margin为正值时盒子的排布情况。

2. padding没有负值

​ 这个没什么好说的,padding为负值时浏览器会无视该属性

-margin-2.png

3. margin为负值时不能以"盒子的一部分"的方向思考

  1. 只要元素符合"充分利用可用空间",无论垂直还是水平方向,都可以通过margin改变尺寸

    ​ 什么是"充分利用可用空间"呢? 例如,body里有一个未定义width的盒子,这个盒子的宽度会充满body,那么这个盒子在水平方向就是符合"充分利用可用空间"的。

    ​ css默认流向方式是水平的,所以对于普通流元素,margin只能改变水平方向的大小。

    ​ 但是,绝对定位元素是有拉伸特性的,那么margin可以同时改变水平和垂直方向的大小

  2. 元素不符合"充分利用可用空间",可以移动元素