• 关于内层DIV设置margin-top不起作用的解决方案


    from:http://www.cnblogs.com/huangyong8585/archive/2013/05/21/3090779.html

    (一)

    近日在做另外一个站点的时候,又遇到这个问题,决定好好的研究解决一下。

    代码如下:

    <div>上部层</div>

    <div> <!--父层-->
         <div style="margin-top:200px;">子层</div>
    </div>

    理想中的效果是父层和上部层贴边显示,子层距离父层顶部有200px的距离,在ie中正常,但是在ff中却出现问题,子层和父层贴边了,而父层和上部层却间隔了200px。

    百思不得其解,求助google,得到如下的一句:

    当两个容器嵌套时,如果外层容器和内层容器之间没有别的元素,firefox会把内层元素的margin-top作用与父元素。

    也就是说因为子层是父层的第一个非空子元素,所以使用margin-top会发生这个错误。

    解决的办法有两个:

    1、使用浮动来解决,即将子层代码改为:<div style="margin-top:200px;float:left";>子层</div>

    2、使用padding-top来解决,即:

    <div style="padding-top:200px;">
        <div>子层</div>
    </div>

    (二)

    常常可以碰到这样一个问题,就是外层DIV设置了高与宽,内层DIV如果设置maring-top不起作用(FIREFOX和IE8中测试),原因大致是内层div没有获得布局。如下面的代码:

    <style>

    .aDiv {background:red; 300px; height:300px; }
    .bDiv {background:green; position:relative; 100px; height:20px; margin-top:10px;}
    .cDiv {background:black; position:relative; 100px; height:20px;}
    </style>

    <div class="aDiv">
    <div class="bDiv"></div>
    <div class="cDiv"></div>
    </div>

    测试发现,bDiv的margin-top不起作用,仍是0px的显示效果。如果在firefox中用firebug查看,可以看到margin-top是有值的,为10px;解决问题如下:

    1、把margin-top改成padding-top,不过,前提是内层的Div没有设置边框
    2、给外层的Div加padding-top
    3、给外层DIV加:

    A、float: left或right

    B、position: absolute

    C、display: inline-block或table-cell或其他 table 类型

    D、overflow: hidden或auto

    比如,可以更改上述代码如下:

    <style>

    .a {background:red; 300px; height:300px; float:left; }
    .b {background:green; position:relative; 100px; height:20px; margin:10px;}
    .c {background:black; position:relative; 100px; height:20px;}

    .clear{ clear:both;}
    </style>

    <div class="a">
    <div class="b"></div>
    <div class="c"></div>
    </div>

    <div class="clear"></div>

    注意:后面要加一个清除浮动。

  • 相关阅读:
    Java工程代码开发规范总结
    MySQL5.7 JSON字段性能测试
    Forest v1.5.12 发布,声明式 HTTP 框架,已超过 1.6k star
    HTTP基础系列之:一文搞懂URL
    近1000 star,Forest 1.5.0 正式版发布
    我的开源项目在五个月内超过了 600 star
    我的开源经历:为了方便处理三方 HTTP 接口而写的 Java 框架
    【约瑟夫环】C语言数组法+java循环链表法
    UNICODE编码 特殊符号
    swift3.0 保存图片到本地,申请权限
  • 原文地址:https://www.cnblogs.com/morning0529/p/4704890.html
Copyright © 2020-2023  润新知