CSS 之 嵌套 margin-top 处理

  如下代码:

    <div style=" width:1000px; height:700px; margin:auto;">
        <div style=" width:1000px; height:49px; margin-top:281px; ">
            <span style="display:inline-block; width:121px; height:49px; margin-left:230px;">
                <a href="#">
                    <img name="r2_c2" src="shc.png" width="121" height="49" border="0" id="btn1" alt="" />
                </a>
            </span>        
        </div>
    </div>

  会发现,内层div的margin-top显示在了外层div上。

  这个“问题”……它是CSS2.1的盒模型中规定的内容——Collapsing margins

  In this specification, the expression collapsing margins means that adjoining margins (no non-empty content, padding or border areas or clearance separate them) of two or more boxes (which may be next to one another or nested) combine to form a single margin.

  所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、Padding或Border分隔。

  解决方案:

  给 Outer Div 加上 padding/border,或者

  1.给父层添加:overflow:hidden;
  2.给父层添加:padding 或 border除none以外的属性
  3.给父层添加:padding-top代替margin-top的效果。
  4.给 外层 Div / 内层 Div 设置为 float/position:absolute(CSS2.1规定浮动元素和绝对定位元素不参与Margin折叠)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值