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

(一)

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

代码如下:

上部层

子层

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

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

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

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

解决的办法有两个:

1、使用浮动来解决,即将子层代码改为:

子层

子层

(二)

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

.ap {background:red; width:300px; height:300px; }

.bp {background:green; position: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、overflow: 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;}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值