margin深入理解

一、  使用场景:
  1.  一侧定宽的自适应布局
  2.  两端对齐布局
  3.  等高布局

二、 margin百分比单位:
   普通元素的百分比margin都是相对于容器的宽度计算的,例如div的width:300px;则margin:10%,则 代表margin的上下左右都是30px;
   绝对定位元素的百分比margin是相对于第一个定位祖先元素(relative/absolute/fixed)的宽度计算的;

三、应用场景: a.宽高2:1自适应矩形;

四、margin重叠通常发生的情况:
   block 水平元素(不包括float和absolute元素);
   不考虑writing-mode,只发生在垂直方向(margin-top/margin-bottom);(writing-mode可 以使文字垂直方向显示)
五、margin重叠的3种情景:
   相邻的兄弟元素,例如两个p元素的margin:1em,理论p的间距应该为2em,实际则为1em,
   父级和第一个/最后一个元素,  
   空的block元素,
六、解决父级和第一个/最后一个元素margin重叠的问题:
    1、在父级上添加overflow:hidden属性
   2、若存在border:1px solid #DDD;/padding:1px; 则可以解决重叠
   3、可以在第一个元素之前加上空格 或者给父级添加上height

七、空block元素margin重叠条件:
   1、元素没有border/padding/inline设置
   2、没有height/min-height

八、margin:auto的机制:
 auto属性默认的是对整个容器进行分配,解决办法:
 水平方向若为行内元素,则将display设置为block显示,则auto可产生垂直方向若父级高度设定,子级元素的高度小于父  级,则可生效;若子级元素大于父级元素,则auto 失效,因为margin 为负值,不能产生效果。
九、垂直方向的的垂直居中:

  writing-mode更改流为垂直方向,实现垂直方向的margin:auto 居中;
  使用absolute,则可以使用margin:auto居中;

十、margin 无效情况解析:
   1、inline水平元素的垂直margin无效
   2、display:table-cell/display:table-row等声明的margin无效
   3、margin重叠

 4、position :absolute和margin

 5、内联特性导致的margin无效

十一、关于margin-start 和margin-end

 1、margin-start存在兼容性问题,需写兼容性,效果等同于margin-left,此为正常流向;

2、从右向左流向时候,margin-start等同于margin-right;

3、垂直流向时候,margin-start等同于margin-top。

 同上,则 margin-end同理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值