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; 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>

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

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

  1. CSS 之 内层div填充margin,外层div的背景色不会覆盖该margin

    外层元素(如div)中只有一个非空子元素,此时margin是被折叠了.两者之间取最大的margin值,表现在外层父元素上,而不是内层子元素. 注意: (1)只有垂直方向上才会出现此现象,水平方向不会出 ...

  2. HTML a标签如何设置margin属性(转)

    很多同学发现对DIV有效的许多CSS属性对<a>或<p>标签都无效,好比说 <div style="margin-top:5px;"></ ...

  3. div设置overflow-scroll滚动之后,jq获取其子元素的offset.top出现问题。

    先上个图: 布局很简单,左右超过屏幕的部分自行滚动. 1. html <div class="ce-container"> <div class="ce ...

  4. 内层div的margin-top影响外层div——引出外边距合并Collapsing margins

    内层div的margin-top影响外层div——引出外边距合并Collapsing margins 作者:zccst 今天才算是了解边距合并.正如一位前辈所言,每一个CSS的坑,都让你学到不少知识. ...

  5. 让内层Div将外层Div撑开

    在CSS排版中,如果一个层中的层使用了float浮动的话,那么就有可能会出现外层没有被内层撑开的情况,如以下代码所示: <div style="width:300px; "& ...

  6. 第4天:JS入门-给div设置宽高背景色

    今天学习了js入门课程,听的不多,做了个小练习,给div设置宽高.背景色.一点点都是进步.核心代码如下: <!DOCTYPE html><html lang="en&quo ...

  7. 子DIV设置margin-top影响父DIV位置的解决办法

    父div如果没有任何东西,子div设置margin-top,父div会下落 <!DOCTYPE html> <html lang="en"> <hea ...

  8. Android如何在java代码中设置margin

    习惯了直接在xml里设置margin(距离上下左右都是10dip),如: <ImageView android:layout_margin="10dip" android:s ...

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

    ========  3 在Java代码里设置button的margin(外边距)? 1.获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams ...

随机推荐

  1. C#基于委托的带参数的消息传递设计

    需求场景 在对象A中注册消息,指定回调函数 在对象B中解释消息,调用对应的回调函数,附上对应的参数对象 定义 public delegate void MessengerDelegate(object ...

  2. js 随手记

    var name = 'frog' function hello(){ alert(name); // undefined var name = 'bbc'; } 在javascript中,函数是可以 ...

  3. 解决jquery和其他库的冲突

    一.jquery在其他库之后导入 (1)jQuery.noConflict();  //将变量的$控制权转交给其他库.          jQuery(function(){             ...

  4. Android----------eclipse常用快捷键

    类级操作:--------------------一个去包,一个导包------------------------------------ Ctrl+shift+O (不是零) 清除没用引用 ctr ...

  5. (原)VS2013在Release情况下使用vector有时候会崩溃的一个可能原因

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5016352.html 参考网址: http://www.cnblogs.com/BryZ/archiv ...

  6. Hibernate事务传播性

    事务的几种传播特性 1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务.如果没有事务则开启 比如说:在UserManager中addUser里开启了,那么在addLog ...

  7. Python学习(三) 输出任意格式的字符串以及字符串的切片

    在Python中想要输出一句话,如下 a='hello world' print a //打印出的是hello world print 'hello \n world' //打印出的是 //hello ...

  8. ASP.NET MVC 4.0 学习2-留言板實現

    新增專案實現留言板功能,瞭解MVC的運行機制 1,新增專案   2,添加數據庫文件message.mdf   Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表 添加字段,後點擊&quo ...

  9. 指定g++ 头文件路径的方法

    问题: 尝试引用Python.h 这个头文件 g++ -o main main.cpp main.:: 错误:Python.h:没有那个文件或目录 由些可以看出是g++ 找不到指定的头文件 解决方式: ...

  10. tomcat 项目部署问题

    我本地Tomcat版本:Apache Tomcat/8.0.3.0 服务器端:Apache Tomcat/6.0.37 JVM都是:1.7.0_40-b43 之前项目运行正常,在我更新了一些模块后,重 ...