您现在的位置:首页 > 前端教程 > Javascript教程

JS解决IE 6不支持:hover伪类的简单方法

时间:2009-03-17  来源:豆豆猫  作者:豆豆猫  点击数:202

css2中规定,:hover伪类可以应用在全部元素上,而ie6只支持<a>的伪类,因此对于ie6需要使用js,而ie7/ff/op/sa直接定义:hover即可。8pzBeautyCss.org - 前端教程网

将一下代码保存为一个js文档。8pzBeautyCss.org - 前端教程网

 var W3CDOM = (document.createElement() && document.getElementsByTagName());8pzBeautyCss.org - 前端教程网
window.onload = pinballEffect;8pzBeautyCss.org - 前端教程网

function pinballEffect()8pzBeautyCss.org - 前端教程网
{8pzBeautyCss.org - 前端教程网
    if (!W3CDOM) return;8pzBeautyCss.org - 前端教程网
    var allElements = document.getElementsByTagName('*');8pzBeautyCss.org - 前端教程网
    var originalBackgrounds=new Array();8pzBeautyCss.org - 前端教程网
    for (var i=0; i<allElements.length; i++)8pzBeautyCss.org - 前端教程网
    {8pzBeautyCss.org - 前端教程网
        if (allElements[i].className.indexOf('hovereffect') >= 0)8pzBeautyCss.org - 前端教程网
        {8pzBeautyCss.org - 前端教程网
            allElements[i].onmouseover = mouseGoesOver;8pzBeautyCss.org - 前端教程网
            allElements[i].onmouseout = mouseGoesOut;8pzBeautyCss.org - 前端教程网
        }8pzBeautyCss.org - 前端教程网
    }8pzBeautyCss.org - 前端教程网
}8pzBeautyCss.org - 前端教程网

function mouseGoesOver()8pzBeautyCss.org - 前端教程网
{8pzBeautyCss.org - 前端教程网
    originalClassNameString = this.className;8pzBeautyCss.org - 前端教程网
    this.className += " lay-on";8pzBeautyCss.org - 前端教程网
}8pzBeautyCss.org - 前端教程网

function mouseGoesOut()8pzBeautyCss.org - 前端教程网
{8pzBeautyCss.org - 前端教程网
    this.className = originalClassNameString;8pzBeautyCss.org - 前端教程网
}8pzBeautyCss.org - 前端教程网
pinballEffect();8pzBeautyCss.org - 前端教程网

8pzBeautyCss.org - 前端教程网

下面的代码是html代码,插入到head区内:8pzBeautyCss.org - 前端教程网

 <!--[if lte IE 6]>8pzBeautyCss.org - 前端教程网
<script type="text/javascript" language="Javascript" src="hover.js"></script>8pzBeautyCss.org - 前端教程网
<![endif]-->
8pzBeautyCss.org - 前端教程网

因为IE 7+支持:hover,因此使用条件注释,只针对IE 6-调用该JS文件。8pzBeautyCss.org - 前端教程网
相应的CSS为:8pzBeautyCss.org - 前端教程网

 /* 这个是普通样式,定义给需要效果的元素 */8pzBeautyCss.org - 前端教程网
.hovereffect {8pzBeautyCss.org - 前端教程网
border:1px solid blue;8pzBeautyCss.org - 前端教程网
}8pzBeautyCss.org - 前端教程网
/* 这个是hover样式 */8pzBeautyCss.org - 前端教程网
.hovereffect:hover,8pzBeautyCss.org - 前端教程网
.lay-on {8pzBeautyCss.org - 前端教程网
background: #eee;8pzBeautyCss.org - 前端教程网
border:1px solid red;8pzBeautyCss.org - 前端教程网
}
8pzBeautyCss.org - 前端教程网

应用:8pzBeautyCss.org - 前端教程网

 <div class="hovereffect">div的hover</div>8pzBeautyCss.org - 前端教程网
<p class="hovereffect">p的hover</p>
8pzBeautyCss.org - 前端教程网
8pzBeautyCss.org - 前端教程网

来顶一下