zoukankan      html  css  js  c++  java
  • 子元素的margin-top会影响父元素

    ---恢复内容开始---

    之前在写项目的时候,发现原本想让父子元素之间加点边距,却让父元素产生了margin-top,于是百度之后发现了原因。

    在css2.1盒模型中

    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分隔。

    父元素的子元素的上边距margin-top如果碰不到有效的border或者padding,他们之前会共享(父元素会有margin-top)。所以会出如上的问题。同级的盒元素满足上面的条件也会出现这个情况。

    解决方案:

    1.为父元素例子中的middle元素增加一个border-top或者padding-top即可解决这个问题

    2.子元素使用浮动或者绝对定位absolute

    3.父级overflow:hidden(共享的意思是margin-top看上去父子都有,但其实还是在子上,overflow让子元素超出父元素部分隐藏即mrgin-top隐藏,但是达不到父元素与子元素分割开的效果,不推荐)

  • 相关阅读:
    跨浏览器的事件对象(EventUtil)
    原型 Object.create
    DC大牛的function扩展
    事件代理 proxy
    错误处理程序
    JQuery 插件
    关于ClownFish的问题
    C#拾遗
    Jquery技巧
    防盗链
  • 原文地址:https://www.cnblogs.com/tzzf/p/7822009.html
Copyright © 2011-2022 走看看