CSS 负外边距

CSS margin负外边距总结

(1)、外边距叠加

  <1>、对于水平相邻的元素,它们之间的水平间距为两个元素的外边距叠加,即margin-right + margin-left。

  <2>、对于上下紧挨着的元素,它们之间的垂直间距为两个元素中外边距最大的那个,即max{margin-bottom,margin-top}。

    注:margin-bottom,margin-right是上边的元素属性,margin-top,margin-left为下面元素的属性

(2)、盒子模型的宽度----(结论一二摘自《CSS设计指南》)

  <1>、结论一:没有(就是设置width的)宽度的元素始终会扩展到填满其父元素的宽度为止。添加水平边距a、内边距b和外边距c,会导致内容宽度减少,减少量等于水平边框、内边距和外边距的和,即减少量为2*(a+b+c)

  <2>、结论二:为设定了宽度的盒子添加边框、内边距和外边距,会导致盒子扩展的更宽。实际上,盒子的width属性设定的只是盒子内容区的宽度,而非盒子要占据的水平宽度。

  结论一和二可以理解为,如果没有设置width时,子元素总会调整自身的大小从而不会撑大父元素或者溢出父元素,而设置了width,说明了这个值是开发者所重视的,从而在保证这个值不变的情况下,把盒子扩展的更宽。

(3)、上面(1)因为跟外边距有关,顺便提及,而(2)则对将提到的外边距的理解有帮助。

   CSS中的元素默认会按照文档流进行排放。我们可以通过position中的relative(其余属性对下文无帮助,不涉及)来改变元素的位置,但此时该元素在文档流的位置没有移动,只是自己相对与原始位置挪动了一下,总而言之,通过设置relative不会影响原有页面的文档流。现在可以来谈负外边距了,它跟relative不同,因为它会影响页面的文档流。假设将margin-top设置为-20px;则该元素会向上移动20px,该元素上面的元素在文档流中位置保持不变,下面元素相对之前的位置会向上移动20px,当然负左,右,下外边距也是。

现在针对(2)中谈及的有无设置width,如果设置了负外边距的情况

<1>、如果没有设置width,设置负左右外边距,会导致元素的宽度增加,增加的值为负外边距的值。

<2>、有width,设置负左右边距,不会影响width的大小,但是会导致元素向左右移动

    其实我们可以用(2)中的结论来理解(3)中的结论。有width时,无论是有无外边距,都不会影响到width的大小。举例,设置了正左外边距会使元素向右移动,同样,设置了负左外边距,则会向右移动。无width,元素总会完全占据父元素的空间,设置了正左边距,元素还是完全占据了父元素的空间,只是width的大小变化了而已,而设置了负左外边距,元素会向左移动,但是右边又会相应空出,由于无width时,子元素总会尝试去占据父元素的空间,所以总是同样会去占据刚刚腾出的空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值