上下margin的传递

197 阅读1分钟

上下margin的传递

margin-top传递

如果块级元素的顶部线和父元素的顶部线重叠,那么这个块级元素的margin-top值会传递给父元素。

margin-bottom传递

如果块级元素的底部线和父元素的底部线重写,并且父元素的高度是auto,那么这个块级元素的margin-bottom值会传递给父元素。

如何防止出现传递问题

  • 给父元素设置padding-top\padding-bottom

  • 给父元素设置border

  • 触发BFC: 设置overflow为auto

建议: margin一般是用来设置兄弟元素之间的间距;padding一般是用来设置父子元素之间的间距

上下margin的折叠

垂直方向上相邻的2个margin(margin-top、margin-bottom)有可能会合并为1个margin,这种现象叫做collapse(折叠)。水平方向上的margin(margin-left、margin-right)永远不会collapse。

折叠后最终值的计算规则:两个值进行比较,取较大的值。

那么如何防止margin collapse呢?只设置其中一个元素的margin

两个兄弟块级元素之间上下margin的折叠:

image.png

父子块级元素之间margin的折叠:

image.png

外轮廓 - outline

outline表示元素的外轮廓,不占用空间,默认显示在border的外面。

outline相关属性有:

  • outline-width: 外轮廓的宽度
  • outline-style:取值跟border的样式一样,比如solid、dotted等
  • outline-color: 外轮廓的颜色
  • outline:outline-width、outline-style、outline-color的简写属性,跟border用法类似

应用实例:去除a元素、input元素的focus轮廓效果