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

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

(一)

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

代码如下:

<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; width:300px; height:300px; }
.bDiv {background:green; position:relative; width:100px; height:20px; margin-top:10px;}
.cDiv {background:black; position:relative; width: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; 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;}
</style>

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

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

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

时间: 2024-10-13 14:10:52

《转》关于内层DIV设置margin-top不起作用的解决方案的相关文章

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

关于内层DIV设置margin-top不起作用的解决方案 (一) 近日在做另外一个站点的时候,又遇到这个问题,决定好好的研究解决一下. 代码如下: <div>上部层</div> <div> <!--父层-->     <div style="margin-top:200px;">子层</div></div> 理想中的效果是父层和上部层贴边显示,子层距离父层顶部有200px的距离,在ie中正常,但是在ff

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

关于内层DIV设置margin-top不起作用的解决方案 代码如下: <div>上部层</div> <div> <!--父层-->     <div style="margin-top:200px;">子层</div></div> 理想中的效果是父层和上部层贴边显示,子层距离父层顶部有200px的距离,在ie中正常,但是在ff中却出现问题,子层和父层贴边了,而父层和上部层却间隔了200px. 百思不得其

内层div/table的margin-top影响外层div

.inner-table { tbody{ tr:nth-child(odd) { background-color: #ffffff; } tr:nth-child(even) { background-color: #f9f9f9; } } margin: 20 auto; width:90%; } div.mini-table{ background-color:#ebf5fd; /*overflow:hidden; 可以避免外边距合并但影响箭头显示*/ position:relative

Android -- java代码设置margin

我们平常可以直接在xml里设置margin,如: <ImageView android:layout_margin="5dip" android:src="@drawable/image" /> 但是有些情况下,需要在java代码里来写,可是View本身没有setMargin方法,怎么办呢? 通过查阅android api,我们发现android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left,

jQuery如何将div设置为水平垂直居中

jQuery如何将div设置为水平垂直居中:使用CSS也可以实现div的水平垂直居中效果,但是有时候可能需要动态的调整,下面就介绍一下如何用jQuery实现对象的水平垂直居中效果,先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.51texiao.c

Android如何在java代码中设置margin

习惯了直接在xml里设置margin(距离上下左右都是10dip),如: <ImageView android:layout_margin="10dip" android:src="@drawable/image" /> 只是有些情况下,需要在java代码里来写. API中,android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left, top, right, bottom).可是View本身没

转--Android如何在java代码中设置margin

http://www.2cto.com/kf/201207/140111.html 红黑联盟: 习惯了直接在xml里设置margin(距离上下左右都是10dip),如: <ImageView android:layout_margin="10dip" android:src="@drawable/image" /> 只是有些情况下,需要在java代码里来写. API中,android.view.ViewGroup.MarginLayoutParams有个

外层div自适应内层div高度

最近在做项目的时候,写jsp页面,在显示一些数据时不知道数据的多少,这时候就需要外层div自适应内层div的高度. 在网上找了些方法,也是本人现在用的解决方法,这里只介绍一种,当然还有很多种解决方法. 如: 1 <div id="div_1"> 2 <div id="div_1_1"></div> 3 <div id="div_1_2"></div> 4 <div id="

在java代码中设置margin

我们平常可以直接在xml里设置margin,如: <ImageView android:layout_margin="5dip" android:src="@drawable/image" /> 但是有些情况下,需要在java代码里来写,可是View本身没有setMargin方法,怎么办呢? 通过查阅android api,我们发现android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left,