论负margin对浮动元素的影响

本文版权归郑哲明和饥人谷所有,转载请注明来源


keywords: 负margin、浮动元素。


预警:下文仅仅是本人猜想,欢迎拍砖。

我们都知道,负margin可以使元素或其相邻元素(右边或下面)移动,但具体为什么会产生这种现象呢?浏览器是又如何处理负margin的?只有清楚了这两个问题,才能明白负margin对浮动元素的影响,比如:

负margin对浮动元素的影响

看起来,浮动元素脱离普通文档流之后,似乎彼此间形成了通路,相互间可以利用负margin移动。


负margin对浮动元素的影响.gif

但其中的原理真的是这样吗?

在浏览器中,最重要的概念莫过于盒模型,任何元素都会有一个盒子,可以这样说,浏览器渲染出的页面只不过是一群盒子的有序排列而已。我们知道,一个盒子包括这样几个部分:margin、border、padding、content。

无论是行内元素还是块级元素、浮动元素等,它们的盒子本质上没有什么区别。一个元素所占据的空间就是盒子所占据的空间。因此,负margin移动元素的原理也就水落石出了:负margin会缩小或扩大盒子所占据的空间。

当元素使用负margin-left:


负marign-left.gif

盒子空间减少,当然就向右移动,挨着包含块的边框排列了,但同时,元素的宽高没变,因此视觉上看,元素的大小没有变化。其余负marign同理。

负margin对浮动元素的影响也逃脱不了上述原理,就不具体演示了。

这里提示一点,负margin-left与负margin-right有些许不同(top和bottom同理):
负margin-left无下限,负margin-right有下限,为盒子的原始大小。
至于两者移动方向的区别,我想,也比较好理解。

另外,如果元素宽度不固定,而是平铺整行,使用负margin会扩大内容宽度。

lazy:(……………………

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 1.浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 何谓浮动元素?有什么特征?所谓浮动...
    草鞋弟阅读 832评论 0 1
  • css中的负边距(negative margin)是布局中的一个常用技巧,只要运用得合理常常会有意想不到的效果。很...
    studystudy阅读 1,170评论 0 0
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 965评论 0 2
  • 目录 内容 一. 我对标签、元素、盒子的理解 相信很多人和我之前一样,对于web的许多概念也都知道是什么意思,大家...
    科研者阅读 716评论 2 2