沙頭角首頁深圳之家---Sha Tau Kok Yan Tian

2009/09/25 16:35
:hover 是我们在 CSS 设计中最常运用的伪类之一,许多绚丽效果的实现离不开伪类 :hover,比如我们常见的纯 CSS 菜单、相册效果等等。

或许用了这么久的伪类 :hover,还有部分朋友还不完全了解 hover 的规则:


在 CSS1 中此伪类仅可用于 a 对象。且对于无 href 属性(特性)的 a 对象,此伪类不发生作用。

在 CSS2 中此伪类可以应用于任何对象。


但目前 IE5.5、IE6 仅支持 CSS1 中的 :hover,不过新出的 IE7 是支持 CSS2 中的 :hover。

当我们用伪类 :hover 做某些特殊效果时,依据 CSS2 很好完成,但为了现在占据主流浏览器的 IE6 ,我们又不得不做很多工作,比如给添加a元素等来模拟完成最终的效果。

不是标准说明的错,也不是 IE 浏览器不支持 CSS1,而是 IE 浏览器自身解析的问题,是 IE5.5 和 IE6 中伪类:hover 的 BUG。

那又该如何解决这个问题呢?
这个 BUG 可以通过在链接的属性中增加某些特殊的 CSS 属性声明来消除。

下面我们对上面的第二个例子进行实验,究竟哪些属性可以帮我们来消除这些 BUG。

对 CSS 代码我们增加:

li a:hover {}


对其属性我们仅设定 width:100px; 发现在 IE6 中依旧没有变化,我们尝试着更改 width 的 value ,比如使其 width:99px,奇怪的事情发生了,在 IE6 中,隐藏的部分在触发的时候显示出来了。我们再对 li a:hover 的属性仅设定 color 来测试(初始值为 #fff),更改 color 值,发现在 IE6 下却也不能触发显示,奇怪,奇怪,真奇怪……是不是依旧是一头雾水……没关系,继续往下实验,或许归类了我们就能发现规律了!

我们再用其他属性进行设置:width,positon,background,text-decoration,font-size,font-weight,font-family,border,float,display,font-style,margin,padding,text-align,overflow,text-transform,text-indent,z-index,vertical-align。

我们发现除了 text-decoration,color,z-index 不能触发显示(对于不能触发显示的部分,可以还有某些遗漏的属性,欢迎朋友补充)外,其他属性均可以做为消除伪类 :hover BUG 的特定属性。

示例:

div a:hover {
background:;
}
  • 中查看更多“IE中伪类:hover的使用及BUG ”相关内容
  • 中查看更多“IE中伪类:hover的使用及BUG ”相关内容
  • 中查看更多“IE中伪类:hover的使用及BUG ”相关内容
  • 中查看更多“IE中伪类:hover的使用及BUG ”相关内容
  • 中查看更多“IE中伪类:hover的使用及BUG ”相关内容
  • 中查看更多“IE中伪类:hover的使用及BUG ”相关内容
  • 发表评论
    表情
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    打开HTML
    打开UBB
    打开表情
    隐藏
    记住我
    昵称   密码   游客无需密码
    网址   电邮   [注册]