#layout { width:400px; border:2px solid #ccc; padding:2px;}
看到没,它没有被内容元素给撑高,要解决这个问题,需要使用以下样式
overflow:auto; zoom:1;
overflow:auto;是让高度自适应, zoom:1;是为了兼容IE6而写(此样式不能通过W3C验证)。
这就是所谓的css hack,之前讲解3px bug时忘记说css hack是个什么东东了,现在补充一下:
由于不同的浏览器,比如IE 6,IE 7,IE8,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。 这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack。这里的overflow:auto; zoom:1;就是所谓的css hack,这种形式是应用我们常用的代码来解决不兼容问题,也会用到添加一些特殊符号的形式,它本身没有意义,只是针对不同浏览器是否对它识别来实现的,具体用到的进修再讲。
五、IE6的双倍边距bug
这又是IE6一个著名的bug,也是我们经常遇到的。如上例,当浮动后设置左侧外边距时后,最左侧将显示为双倍边距,比如设置为20,而在IE6下却显示40px,解决这个问题只需应用一个样式,大家记住就可以了
display:inline;
增加以上样式后,在IE6下和其它浏览器下显示效果就一样了。
- <!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" />
- <style type="text/css">
- body { margin:0 auto; font-size:12px; font-family:Verdana; line-height:1.5;}
- ul,dl,dt,dd,h1,h2,h3,h4,h5,h6,form { padding:0; margin:0;}
- ul { list-style:none;}
- img { border:0px;}
- a { color:#05a; text-decoration:none;}
- a:hover { color:#f00;}
- #layout { width:390px; border:2px solid #ccc; padding-bottom:20px; overflow:auto; zoom:1;}
- #layout ul li { width:72px; float:left; margin:20px 0 0px 20px; display:inline; text-align:center;}
- #layout ul li a { display:block;}