div嵌套margin-top失效的解决方法

近日学习过程中,出现一个问题:内外多层div嵌套时,margin-top不起作用,margin-left起作用,查询百度,有结果:

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

经过测试,得如下解决方法,详请见代码中的注释:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>div嵌套内层margin-top不起作用</title>
<!--
div嵌套内层margin-top不起作用
@author:[email protected]
原因:当两个容器嵌套时,如果外层容器和内层容器之间没有别的元素,firefox会把内层元素的margin-top作用与父元素。
-->
<style type="text/css">
    .outer{
    width:500px;
    height:400px;
    background-color:#ccc;
    /*解决方法一:外层加float
    float:left;*/
    /*解决方法二,外层用padding,但内层不能再设置margin-top,否则间距会相加
    padding-bottom:20px;*/
    /*解决方法三:给外层加个边框,可以设置边框颜色与周围一致
    border:1px  dashed #333;*/
    /*综合来看,第一种方法要记得后面加clear,第二种方法容易引起兼容性问题,第三种方法带边框可能不合使用要求,第四种方法推荐*/
    }
    .inner{
    width:300px;
    height:200px;
    background-color:#333;
    margin-top:20px;
    margin-left:20px;
    }
</style>
</head>
<body>
    <div class="outer">
        <!--内外层之间没有元素-->
        <!--解决方法四:在内层之上加入下面的代码:
        <div style="height:0px;">&nbsp;</div>-->
        <div class="inner">
        </div>
    </div>
</body>
</html>
时间: 2024-10-08 19:35:11

div嵌套margin-top失效的解决方法的相关文章

【php】thinkphp以post方式查询时分页失效的解决方法

好久没有写博客了,最近说实话有点忙,各个项目都需要改bug.昨天晚上一直没有解决的php项目中的bug,就在刚才终于搞定,在这里还需要感谢博客园大神给的帮助! 具体问题描述 最近遇到一个非常棘手的问题,也是因为刚入手thinkphp.在做项目的过程中,因为需要非常多的查询条件,如果以get方式提交表单的话,会因为url长度限制而报错,所以必须使用post方式提交表单数据,但是在分页的过程中,遇到了问题,因为thinkphp自带的分页是以a标签的形式,进行下一页的,这样查询条件就没有传入后台,导致

jquery中checkbox全选失效的解决方法

这篇文章主要介绍了jquery中checkbox全选失效的解决方法,需要的朋友可以参考下 如果你使用jQuery 1.6 ,代码if ( $(elem).attr(“checked”) ),将获得一个属性(attribute) ,它不改变该复选框被选中和选中.它只是用来存储默认或选中属性的初始值.为了保持向后兼容,.attr() 方法从 jQuery 1.6.1+ 开始除了返回属性值外,还会更新 property 属性,因此 boolean attribute(布尔属性)不需要通过 .prop(

IE6下fixed失效的解决方法

在网上找了好久,终于找到一种亲测有效的解决方法. <!--[if IE 6]> <script type="text/javascript"> (function($) { jQuery.fn.Fixed = function(options) { var defaults = { x:0, y:0 }; var o = jQuery.extend(defaults, options); var isIe6 = !window.XMLHttpRequest; v

项目记录:spring+springmvc 项目中 @Transactional 失效的解决方法

第一步,修改spring的配置文件和springmvc的配置文件 --------------------------------applicationContext.xml <context:annotation-config/>  <context:component-scan base-package="com.xxx"> <context:exclude-filter type="annotation" expression=&

IIS上发布站点后URL重写失效的解决方法

在发布网站时URL重写有可能会失效,如果失效的话就需要您设置一下IIS:1.Windows XP系统或Windows 2003系统等使用以下方法:>打开IIS,主目录-〉配置-〉映射-〉在窗体左侧中部,点击“添加”a按钮进入“添加/编辑应用程序扩展名映射”窗体.>在“添加/编辑应用程序扩展名映射”窗体中设置:可执行文件-〉选择“C:\WINDOWS\Microsoft.NET\Framework\v4.0.50727\aspnet_isapi.dll”(和.aspx扩展名的可执行文件相同)&g

当有“Button1.Attributes.Add(&quot;onclick&quot;, &quot;return confirm(&#39;你确定要保存修改吗?&#39;)&quot;);”时,验证控件失效的解决方法

同一个页面用Js和服务器验证控件OnClientClick提交问题 实现功能:        点击Button按钮的OnClientClick事件,不会影响服务器验证控件的验证功能                                                (验证不通过,则不提交服务器页面)背景:       1. 在同一个页面有服务器验证控件(RegularExpressionValidator),多个       2. 有Javascript函数,实现验证和其他功能    

CentOS忘记密码修改方案以及centos卡在开机登录界面,命令失效的解决方法

CentOS忘记密码修改方案 应用场景 linux管理员忘记root密码,需要进行找回操作. 注意事项:本文基于CentOS7.2环境进行操作的,由于CentOS的版本之间是有差异的,继续之前请先确定好版本 1.在启动GRUB菜单中选择编辑选项,按键  "e"  进入编辑模式 2.在里面找到 "ro"  将 "ro" 修改为 " rw init=/sysroot/bin/bash ": 修改后的内容如下: 3.修改完成之后,同

关于怎样用PHP及JS来动态加载html元素及加载的html代码绑定事件失效的解决方法!

首先编写好的html代码放入php文件里面设置请求头格式为text/html 然后呢我将用jquery来操作 先定义一个用了盛放代码的容器 $(function(){}) => window.onload .sn-header-bg 是我用来盛放代码的容器 我的php文件名是header.php放在data目录下! 执行以上代码完成后一个页头就出来了! 加载完成后我在header里面绑定了两个函数,但是全部失效了,原因是没找到对应的dom元素, 根本原因是我没加载完成之前这两个函数就已经执行去寻

IE8下String的Trim()方法失效的解决方法

String的Trim()方法失效,在ie8下是有这样的情况的,解决方法也很简单使用$.trim(str)即可,需要的朋友可以了解下 用jquery的trim()方法,$.trim(str)就可以了.