IE8下DIV嵌套出现错误解决方案

开发 前端
DIV嵌套还是比较实用的,于是我研究了一下DIV嵌套的使用,这里和大家分享一下IE8下DIV嵌套出现错误解决方案,希望对你的学习有所帮助。

这里和大家分享一下IE8下DIV嵌套出现错误解决方案,最近用DIV写了几个网页,一开始呢,从来没有在IE8下面测试过,最近升级了IE8,发现了好些问题,一开始用IE6和IE7都没有的新问题出现了,大概就是以下的三种方法,请看详细介绍。

IE8下DIV嵌套出现错误解决方案

最近用DIV写了几个网页,一开始呢,从来没有在IE8下面测试过,最近升级了IE8,发现了好些问题,一开始用IE6和IE7都没有的新问题出现了,大概就是以下的三种方法,与君共勉! 

<dividdivid=”a1″> 
 
<dividdivid=”b1″></div> 
 
<dividdivid=”b2″></div> 
 
</div> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

 当b1和b2都是float=left时候,a1层的高度不会被b1和b2的高度撑开。(这个现象只有IE8发生,其他版本IE以及IE8选择兼容模式后就没有问题。)

解决方法:a1的display=table

=================================

不同的浏览器对CSS的解析可能存在出入,因此能在IE6和IE7正常显示的CSS+DIV页面在IE8和FF(即Firefox)浏览器中未必正常,需要格外留意。以下代码在FF和IE8下无法正常显示出DIV块的内容,仅有一条两个像素高度的红线(其实是上、下边框挤在一处的结果)——

CSS:

#main{  
margin:auto;  
width:400px;  
background-color:#336699;  
border:1pxsolid#ff0000;  
}  
 
DIV:<dividdivid="main"></div> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

 IE8和FF浏览环境下的DIV嵌套效果:

这意味着,当我们把main作为DIV的父层,里面嵌套若干子层的DIV时,父层的样式将是被忽略的或者根本就是无效的,这将可能发生严重的问题。我们必须找出原因。原来,在IE8和FF环境下,一个没有任何内容的不定义高度的DIV是不会显示的。以上代码中,我们若给main定义一个高度,或将<divid="main"></div>改为<divid="main">Hello</div>,IE8和FF下将正常显示我们预设的效果。

嵌套DIV之后情形又如何呢?

里层的DIV是否被IE8和FF视为实体HTML元素?现在我们就来试验一下DIV嵌套效果:

CSS:

#main{  
margin:auto;  
width:400px;  
background-color:#336699;  
border:1pxsolid#ff0000;  
}  
 
#sub{  
width:200px;  
background-color:#aaa;  
float:left;  
}  
 
DIV:  
 
<dividdivid="main"> 
<dividdivid="sub"> 
HelloWorld!<br/>HiGod!  
</div> 
</div> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

在IE8和FF下的DIV嵌套效果如下图所示:

 

显然,id为main的父层DIV嵌套没有被id为sub的里层子DIV撑高,整体样式出现严重的走样效果。一个简便的处理方法是,在***一个子层DIV结束之后加上一个高度为0像素的DIV,且该DIV不允许两边有浮动对象:

<dividdivid="main"> 
<dividdivid="sub"> 
HelloWorld!<br/>HiGod!<br/>OK?  
</div> 
<divstyledivstyle="height:0px;clear:both;"></div> 
</div> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

第二种解决方法是定义一个CSS类:

.box:after{  
content:".";  
display:block;  
height:0px;  
clear:both;  
visibility:hidden;  
}  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

然后将父层DIV代码中的<divid="main">改为<divid="main"class="box">。

以上两种方法都将出现如下图所示的DIV嵌套效果:

【编辑推荐】

  1. CSS解决DIV居中相关问题
  2. DIV CSS中id与class使用用原则与技巧
  3. CSS中border和clear两大属性用法揭秘
  4. 专家提醒 编写CSS时注意的七个方面
  5. 解读DIV CSS网页布局中CSS无效十个原因

 

责任编辑:佚名 来源: sina.com.cn
相关推荐

2010-01-18 14:41:33

VB.NET抓取网页

2010-09-15 10:25:18

IE7IE8CSS兼容性

2010-09-15 10:32:54

IE8兼容

2010-08-30 16:53:14

FirefoxIE8margin-top

2010-08-17 15:26:38

IE7IE8CSS兼容性

2010-08-20 11:01:10

IE7IE8CSS

2010-01-22 15:42:01

VB.NET错误

2010-08-20 09:33:22

IE6IE7IE8

2010-05-26 13:14:22

MySQL错误解决方案

2010-08-27 14:55:23

IE6IE7IE8

2010-08-18 15:10:44

IE7IE8Firefox

2010-10-09 08:57:32

AjaxIE8

2010-09-15 10:14:19

IE7IE8兼容CSS

2010-06-02 10:21:56

Windows 7虚拟化

2010-08-18 14:32:07

IE6IE7IE8

2009-03-30 09:07:22

微软浏览器IE8

2010-09-09 16:47:49

CSS paddingFirefox

2017-05-14 16:02:45

前端开发标签嵌套

2009-07-21 10:35:18

margin coll

2009-12-30 15:29:14

点赞
收藏

51CTO技术栈公众号