关于DIV多层嵌套的margin-top的BUG

今天在做登录页面的时候发现个margin-top的bug ;

初始代码如下:

html:

<div class="logo"></div>
	<div class="login_text">
	<div id="error" class="errorstyle"></div>
</div>

css:

.errorstyle {
     height:20px;
     width:225px;
     background-color:#FFCCCC;
     color:#F00;
     font-size:12px;
     border:#FF0000 solid 1px;
     margin-top:10px;  /* 注意这里 */
 }

结果发现IE6.IE7正常,ie8,FF显示错误。

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

解决方案:

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

.errorstyle {
     height:20px;
     width:225px;
     background-color:#FFCCCC;
     color:#F00;
     font-size:12px;
     border:#FF0000 solid 1px;
     margin-left:90px;
     display:inline;
     /* 以下代码修正FF和ie8的margin-top bug */
     margin-top:10px;
     float:left;

}

2、使用padding-top来解决(因为FF盒模型问题,不推荐使用)

OK,一切都好了~



其实这个是一个外边距叠加的问题,恰恰firefox跟ie8中是正确的,而ie6、7之中是错误的,内部容器的margin与外部叠加,叠加的margin处于容器外部。浮动元素不会产生外边距的叠加,所以间接解决了你遇到的问题。可

参照文章http://www.52css.com/article.asp?id=1018

时间: 2024-12-02 14:40:23

关于DIV多层嵌套的margin-top的BUG的相关文章

元素多层嵌套,JS获取问题

如果一段html嵌套过多,在js中获取还是比较麻烦的,我写了几套方案,大家可以参考参考,如果你有好的方法,也分享出来,让我们瞧瞧. HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>元素多层嵌套,JS获取问题</title> </head> <body> <div

js解析多层嵌套的json,取出所有父元素属性和遍历所有子元素

已知一个多层嵌套的json,取出所有父元素和子元素的id值 思路:因为不知道到底嵌套了多少层,递归有可能造成栈溢出.查询时间特别久的问题 所以先查询一次,判断是否有子节点,如果有,取出子节点并到父节点上,并动态更改数据长度,这样无限循环处理json取出所有id menuIdInit () { var _this = this; var _menu = _this.menus; var menuId = []; var len = _menu.length; for(var i = 0; i <

Less-css扩展指定多层嵌套选择器样式

//扩展Extend Use Method:以在study上扩展指定多层嵌套选择器样式 //Share style .test{ font-size:18px; color:#ffffff; ul{ width:100px; height:50px; li{ float:left; margin-right:10px; width:50px; height:50px; } } } //grammar 1 .study{ &:extend(.test ul li); } //grammar 2 .

多层嵌套ajax同步

方式一: $.ajax({ type : "post", url : "user/add", data : data, async : false, //必须为false success : function(para){ para= eval("(" + para+ ")"); alert(para) } }); 方式二(JQ): $.ajaxSetup({ async : false });//为全局变量,必须加,否则同步

div中嵌套img元素,4px空白

写布局的过程中遇到一个问题,在div中嵌套了img元素,没有指定div的高度,嵌套之后div高度始终比img高4个像素,没有设置内外边距,找不到原因. 除非强制div的高度为img的高度,才能使div高度与img高度一致,问题待解决. 找到原因了:基线问题,img是行内块元素,在块元素里默认有3px或者4px空白(其实就是和文本的基线对齐不管有没有文本)解决:设置图片display:block

asp.net提取多层嵌套json数据的方法

public string GetJsonValue(JEnumerable<JToken> jToken,string key) { IEnumerator enumerator = jToken.GetEnumerator(); while (enumerator.MoveNext()) { JToken jc = (JToken)enumerator.Current; if (jc is JObject||((JProperty)jc).Value is JObject) { retur

SAX解析多层嵌套XML

最近工程需要解析多层嵌套XML,没有找到合适的公共解析的,要是一个类自己对应写一个解析方法,岂不累死,于是自己写了个通用的解析类.现在还不是很完善,对子类的解析需要提前指定好子类不能动态解析. 我用的是DefaultHandler来处理XML,里面方法执行过程是 public void startDocument() throws SAXException 第一个执行方法. public void startElement(String uri, String localName, String

让代码重构渐行渐远系列(1)——解除多层嵌套

重构背景及原因 最近由于项目组的人员在不断扩充,导致项目中代码风格各异,大有百花齐放甚至怒放之势.考虑到团队的生存与发展,经过众人多次舌战之后,最终决定项目组根据业务分成几个小分队,以加强团队管理与提高效率,同时也能培养阶梯人才.各个小分队为了“统一”代码风格,提高成员的代码能力以便最终能提高项目代码质量,减少以后的维护成本,最终决定“每日”进行小组内的代码走查/审查(Code Review),然后进行代码重构. 解除多层嵌套:我所谓的多层嵌套是指的如下代码: 1 public bool 多层嵌

Android 动态生成布局 (多层嵌套)

Android 除了可以加载xml文件,显示布局外,也可以代码生成布局,并通过setContentView(View view)方法显示布局.单独的一层布局,如一个主布局加一个控件(如Button\imageView等)动态生成代码比较简单,下面只给出示例代码: package com.example.android_dongtaishengcheng; import android.os.Bundle; import android.app.Activity; import android.c