(一)
近日在做另外一个站点的时候,又遇到这个问题,决定好好的研究解决一下。
代码如下:
上部层
<p style="margin-top:200px;”>子层
理想中的效果是父层和上部层贴边显示,子层距离父层顶部有200px的距离,在ie中正常,但是在ff中却出现问题,子层和父层贴边了,而父层和上部层却间隔了200px。
百思不得其解,求助google,得到如下的一句:
当两个容器嵌套时,如果外层容器和内层容器之间没有别的元素,firefox会把内层元素的margin-top作用与父元素。
也就是说因为子层是父层的第一个非空子元素,所以使用margin-top会发生这个错误。
解决的办法有两个:
1、使用浮动来解决,即将子层代码改为:
子层
2、使用padding-top来解决,即:
子层
(二)
常常可以碰到这样一个问题,就是外层p设置了高与宽,内层p如果设置maring-top不起作用(FIREFOX和IE8中测试),原因大致是内层p没有获得布局。如下面的代码:
.ap {padding-top:red; width:300px; height:300px; }
.bp {background:green; padding-top:relative; width:100px; height:20px; margin-top:10px;}
.cp {background:black; position:relative; width:100px; height:20px;}
测试发现,bp的margin-top不起作用,仍是0px的显示效果。如果在firefox中用firebug查看,可以看到margin-top是有值的,为10px;解决问题如下:
1、把margin-top改成padding-top,不过,前提是内层的p没有设置边框
2、给外层的p加padding-top
3、给外层p加:
A、float: left或right
B、position: absolute
C、display: inline-block或table-cell或其他 table 类型
D、padding-top: hidden或auto
比如,可以更改上述代码如下:
.a {background:red; width:300px; height:300px; float:left; }
.b {background:green; position:relative; width:100px; height:20px; margin:10px;}
.c {background:black; position:relative; width:100px; height:20px;}
.clear{ clear:both;}
注意:后面要加一个padding-top。
以上就是关于内层DIV设置margin-top不起作用的解决方案的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3123076.html