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,一切都好了~

++++++++++++++++++++++++++++++++++++++++++++++++++

PS:

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



相关阅读:
java中常用工具类之字符串操作类和MD5加密解密类
详解Java编程中线程的挂起、恢复和终止的方法
php批量上传的实现代码
java 解析user-agent 信息
解析Android开发中多点触摸的实现方法
Win10系统无法运行Share EX2提示Are you happy的故障分析及解决方法
如果没有预定Win10升级 还能免费升级Win10吗?
Win10 Mobile/WP8.1优秀专业摄影应用OneShot本周再次更新:修复Bug和优化性能
Windows 10推中国定制版 微软7月29日正式发布
Win10虚拟内存如何关闭?Win10关闭虚拟内存的方法
php无限分类且支持输出树状图的详细介绍
C语言十进制转二进制代码实例
Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作
SQLite教程(一):SQLite数据库介绍
快速导航

Copyright © 2016 phpStudy |