margin的传递, 折叠和margin负值
1. margin什么时候会传递
- 一般父子元素会用padding,当使用margin时,会认为使用错误,故而将margin传递给了父元素
- margin-top传递(一般是父子之间的传递)
- 如果块级元素的顶部线和父元素的顶部线重叠,那么这个块级元素的margin-top值会传递给父元素
2. 怎么防止传递现象
- 给父元素设置padding-top\padding-bottom
- 给父元素设置border(border:1px solid transparent)(transparent相当于rgba(0,0,0,0 ))
- 触发外面盒子的BFC(block formating context)
2.1 为什么BFC可以防止传递现象
3. margin什么时候会折叠
- 设置了top又设置bottom会被认为忘了其中某一项设置,故而出现折叠现象
- 垂直方向上相邻的2个margin(margin-top、margin-bottom)有可能会合并为1个margin,这种现象叫做collapse
- 水平方向上的margin(margin-left、margin-right)永远不会collapse
- 折叠后最终值得计算规则
- 如何防止margin collapse
4. 总结
- margin之所以会出现传递和折叠的现象, 是因为在错误的位置使用了margin
5. margin负值(在没有出现传递和折叠的情况下)
- margin-top和margin-left 负值,元素向上、向左移动
- margin-right 负值,右侧元素左移,自身不受影响
- margin-bottom 负值,下方元素上移,自身不受影响