关于CSS在IE6以下浏览器不支持:hover伪类的解决方式 – C860

今天在W3Cfuns看到这么一篇文章(http://www.w3cfuns.com/thread-347-1-1.html),自己也亲自去测试了一下,很霸气,特别是IE在CSS的实现方式上其实还是下了功夫,只是没有走对 路线而已,o(∩∩)o…哈哈。。。

之前翻看一些网站的源码,有相当一部分的网站是用JS去弥补IE6在CSS上的缺陷的。例如hover,以下是JS的解决方案:

<style type=”text/css”>  
      p:hover,p.hover { background:#eee; }   /* 就是要多写一个.hover而已 */
</style> 
 
下面这段代码要放到页面的底部在</body> 前:
<script type=”text/javascript”>   
//<!–  让所有标记支持hover   
function $(){   
      if(document.all){ // 判断是否IE浏览器   
           var obj=document.all;   
            for(var i=0;i<obj.length;i++){   
                  obj[i].onmouseover=function(){   
                        this.className=”hover”   
                  } ;   
                  obj[i].onmouseout=function(){   
                        this.className=”"   
                  }   
            }   
      }   
}   
 $();   
//–>   
</script>

但是其实微软对IE期望还是很高的。于是乎他们用一种较为“繁琐”的方式解决了IE6的hover问题:
behavior属性

w3school对behavior属性有详细的讲解:http://www.w3school.com.cn/css/css_dont.asp

其实本质上,IE的hover解决方案仍然是通过JS控制,但是因为把它独立出了一个脚本文件,所有貌似能够显得更加简洁。(但事实上和上面JS的方法差不多)

但是behavior也不是一无是处的。我们不能局限于hover的实现,而是要着眼这个behavior到底还能做什么。

<attach for="element" event="event" handler="function" />

也就是说,我们还可以监听除了onmouseover和onmouseout以外的事件。由此,我们可以很轻松地解决IE6及以下浏览器对于CSS属性的一些诸如focus等的伪类的不支持问题,甚至还能超出现有CSS所做不到的功能——因为它的本质是JS的实现,所以就不存在局限性。(当然JS在老版本的IE里面还是有一定的功能限制的)

好了,今天主要是看到了behavior属性略微有点激动,但是其实也不是什么发现新大陆。写这篇东西也只是做一下记录。前端学习之路是漫长的,只能靠不停的积累。希望与各大前端朋友共勉。

关于CSS在IE6以下浏览器不支持:hover伪类的解决方式 – C860

相关文章:

你感兴趣的文章:

标签云: