Ie与FF对a中的div不同解析

2010-9-9 19:22:5

  前两天一个朋友在群里说,他发现了一个firefox的bug,我很惊奇,在一个以程序为主的群里发现了前端bug,太神奇了。先把代码发出来大家看一下

<!DOCTYPE html PUBLIC "-//W3C//DTD html 4.0 Transitional//EN">
<html>
<head>
<title> Unexpected margin </title>
<style>
.zoom a:link,a:active{margin-left: 2em;background-color: #fe0;}
.content {border-width: 2px;border-style: solid;margin: 30px;padding: 10px;}
</style></head><body>
 <a name="hover"><div class="content">Text test.</div><span class="content">Text test.</span></a>
</body>
</html>
重点在这个地方,a的中间有一个div,是什么bug呢,在ff中,你点击content的那个div,会发现整个页面下移约2em的距离。而在ie下面什么事都没发生。这是为什么呢?

其实原因很简单,大家在ie8和ff分别用开发者工具和firebug来看就会发现在ie8下面a位于div下面,span下面也有一小半,但ff下面会发现a包含着div和span.

这就是ie和ff的不同,ie中.a的级别是in-line,div是block,这时候div会在a的上层出现,a被div挡到了,所有的hover和active无法感应到。而在ff中,a被完全使用了,div成了他的内层元素,那么点击在div上面时其实是点在a上面。所以这里候a.active中的margin-left和背景色就开始发挥作用了,div是块级,a为内联,a左移,div只好让位,块级占一行无法偏所以顺位就下移了。

然后再讲一点,那个朋友认为.zoom a:link,a:active是给zoom下的a定样式,这是错误的,这里是给.zomm下的a定了link,然后再定了一个全局a的active,正确的写法应该是

.zoom a:link,.zoom a:active{}

点击这里获取该日志的TrackBack引用地址
上一篇: ASP DateDiff 函数 比较分用n下一篇: 一个侧边弹出菜单,兼容FF Ie 6 7 8
发布:lovepoco | 分类:前端设计学习 | 评论:0 | 引用:0 | 浏览:

评论:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

相关文章