1.改变结构,不出现【一个容器包含2两个具有“float”样式的子容器】的结构。
——此解决方案的评论:疯了!因噎废食的做法。
2.减小第二个容器的宽度,使父容器宽度减去第二个容器宽度的值大于3,例如将本文示例中第二个子容器的宽度改为197px。
——此解决方案的评论:在满足页面布局的前提下可以使用。但是当情况比较复杂的时候,可能实施起来比较困难。
3.去掉所有的注释。
——此解决方案的评论:最直接的做法,但是“没有注释的代码”,的确不是一个好的代码写作习惯。
4.修正注释的写法。将 <!– 这里是注释内容 –>写成<!–[if !IE]>这里是注释内容<![endif]–>
——此解决方案的评论:还不错的解决方案,但是并不是每个人都对<!–[if !IE]>这里是注释内容[endif]–>这种注释写法很欣赏。
5.在第二个容器后面加一个或者多个
——此解决方案的评论:另人感觉很不爽的解决方案。但是的确能解决。影响网页效率
这五种方法我都不推荐,根据我的实验最直接的解决问题的方法是在父容器A添加 margin-right:-3px; 一般情况下都可以解决这个问题。
晚上开着三个浏览器(IE6、IE7、FF)写DIV+CSS时,发现在 IE 6 中 ,DIV 使用背景图片(或直接插入图片在DIV中)的时候,在图片的下端会出现一条空白间隔,经测量,刚好是 3px !没见过这种 3px 问题,用 display: inline 和 -3px 等方法也搞不定,于google之,最终在蓝色理想找到答案,原因是:
IE6默认字号是12pt,默认行高是normal。
找到原因就好解决了,给DIV加上:font-size: 0px;
搞定。(看来自己要学习的东西还很多啊!)
顺便转一下IE6的某些恼人bug,以供参考。
微软的IE系列浏览器用的人是最多的,但对CSS的解释还是存在不少BUG,IE6 的BUG就很明显,IE7中仍然是有部分IE6残留的BUG影子。火狐与Opera的更新速度很快,现在最新的火狐与Opera已经在对CSS的解释能力 上超越了IE。不过IE8就快出来了,到时候微软的新作品应该不会是现在这个样子了,能够很好地兼容CSS,应该能挽回些被火狐和Opera挖去的部分用 户。
闲话少说,这几天努力钻研CSS,光我理解CSS还不够,还要让IE6、7、火狐、Opera下都过一遍才行,让它们都能够正确显示出来才对。其实软件园没有用到高级的DIV架构,但最普通的架构也能见出IE里出现的BUG。
举一些BUG及解决方案吧:
IE6双倍浮动BUG及解决办法
比如
#div1 {
float:left;
margin-left:10px;
width:200px;
height:200px;
border:1px solid red
}
左margin边界设定为了10px,然后IE6却偏偏给你显示成双倍的20px,解决办法是加上display:inline;
ie6/7由注释引起的文字错位:
这是个经典的例子。IE6在使用一大堆注释放在包含在同一个DIV的不同元素之时就会这样,重复一些文字在文字的顶或底部。
我在ASP生成HTML的循环语句中使用了一段注释,结果在IE7下显示整个DIV顶部像空了一截,底部正常,而IE6则顶部空一截,底部还有重影文字,就像上面多出现的猪一样。
解决方法是:去掉注释或者注释不要放置于2个浮动的区块之间。
IE6的著名3px BUG(断头台bug):
两个层,一个浮动,一个不浮动,把浮动的一个放在不浮动层中,你会发现两个之间有点间隙,宽度为3px。这个问题是最让人头疼的问题了。
解决方法:
1、所有的层都浮动 把右边那个层也设置成浮动层就可以消除这可恶的3px间隔
2、给左边的层,应用margin-right:-3px;,同样可解决IE 3px bug。