0%

负边距

以前元素负边距用得较少,一般是使用绝对定位对于宽高不固定的元素居中时才使用。昨天学习圣杯布局的时候,发现负边距的功能很强大,于是总结如下。

负边距在普通static文档流中的作用

  • 在普通文档流中,元素在top/left使用负边距时,它把元素向这个特定的方向移动。
  • 但是当你将负边距设置为相对bottom/right时,它并不会把元素向下或右拉,相反,它会把后面的元素往里面拉,从而覆盖自己。
  • 如果宽度没有设置,左右负边距会把元素向两个方向拉以增加宽度。在这里margin的作用相当于padding。

负边距对浮动元素的影响

  • 如果对一个浮动的元素使用负边距,它会产生一个空白,负的边距部分不占空间,其他元素就可以覆盖这一部分。
  • 最后一个元素的负边距产生的空白可以叠加到其他元素上,这就导致最后一个浮动元素宽度没有受到影响一样。如果两个元素都使用了左浮动并且设置负的margin-right,后面的元素会把前面的元素看成宽度缩小(所以会覆盖一部分),但是有趣的是后面的元素并不会有任何变化,而是依然保持原先的宽度。
  • 如果负边距和宽度一样大的话,它就会被完全覆盖掉。

负边距对绝对定位元素的影响

使元素反方向移动对应距离。

参考

[译] 负边距详解-segmentfault