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

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

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

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

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

  1. <dividdivid=”a1″> 
  2.  
  3. <dividdivid=”b1″></div> 
  4.  
  5. <dividdivid=”b2″></div> 
  6.  
  7. </div> 
  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:

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

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

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

 

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

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

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

  1. .box:after{  
  2. content:".";  
  3. display:block;  
  4. height:0px;  
  5. clear:both;  
  6. visibility:hidden;  
  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-10-09 08:57:32

AjaxIE8

2010-08-18 15:10:44

IE7IE8Firefox

2010-06-02 10:21:56

Windows 7虚拟化

2010-09-15 10:14:19

IE7IE8兼容CSS

2010-08-18 14:32:07

IE6IE7IE8

2017-05-14 16:02:45

前端开发标签嵌套

2010-09-09 16:47:49

CSS paddingFirefox

2009-07-21 10:35:18

margin coll

2010-09-10 12:59:33

DIV嵌套CSS

2009-03-30 09:07:22

微软浏览器IE8
点赞
收藏

51CTO技术栈公众号