margin 百分比
普通元素的百分比指margin相对于容器的宽度计算
绝对定位元素百分比margin值相对于第一个定位祖先元素(rleative/absolute/fixed)计算
|
|
eg.自适应的矩形
margin 重叠,overflow阻止margin重叠
|
|
margin重叠
1.block水平元素(不包含 float absolute)
2.只发生在垂直方向(writing-model 可以修改重叠的方向)margin-bottom margin-top
条件:
1 相邻兄弟
2 父集和 第一个或最后一个元素
3.空的block元素(自己和自己重叠)
eg.父集和 第一个或最后一个元素
|
|
margin-top 重叠
- 父元素非块状格式化上下文元素 (格式化上下文元素:bfc元素)??
- 父元素 没有border-top设置
- 父元素 没有padding-top设置
- 父元素 和第一个元素没有inline元素分隔 (inline元素:文字、图片等)
margin-bottom 重叠
- 父元素非块状格式化上下文元素 (格式化上下文元素:)
- 父元素 没有border-bottom 设置
- 父元素 没有padding-bottom 设置
- 父元素 和最后一个元素没有inline元素分隔
- 父元素没有设置height min-height max-height
eg.解决margin-top重叠
|
|
|
|
|
|
空的block元素(自己和自己重叠)条件
元素没有设置 border 值
- 元素没有设置 padding 值
- 元素内没有 inline 元素
- 元素没有设置 height min-height [max-height??] 值
margin 计算规则
1 正正取大值
2 正负值取相加值
3 负负值取最负值
|
|
margin auto
margin auto 自动填充的特性,block 的默认为width:100%;如果设置width:500px;剩余空间的500px就是被margin:auto自动填充的
|
|
|
|
5.margin 针对于容器填充。对于 img float导致的无效,待补充例子
6.内联元素,margin失效【文字基线对齐】
margin start/end
正常流向: margin-start == margin-left ,两者重叠不累加
水平流向: margin-start == margin-right
垂直流向: margin-start == margin-top [writing-mode:vertical-lr]
|
|
-webkit-margin-collapse :collapse[默认margin重叠]/ discard [取消margin]/ separate 取消重叠
学习资料
案例: