IE6不支持li:hover的解决办法,一句代码让IE6支持li:hover

如果不是因为工作需要,我根本不会理会IE6的兼容问题,甚至我都不想理会IE的所有内核,不过IE9用了下,我还是重新对IE报以期待的。话题扯远了,下面回到话题上来吧。
这次要说的内容就是,如果让IE支持li:hover(还有之类的span:hover、div:hover),用过的都应该差不多清楚,IE6只能识别a:hover,但有时候用UL、LI做下拉列表,IE6就一直让我很头疼。
有人用的解决办法可能第一反应就是去网上找相关的JS来代替hover,其实有个超级简单的方法,就是在LI标记里加一个A标记,然后定义这个A标记为display:block即可,然后就可以把这个A标记宽高设置和LI一样,这样就很兼容IE6了,演示代码如下:
<ul>
<li><a href="#" style="display:block">栏目一</a></li>
<li><a href="#" style="display:block">栏目二</a></li>
<li><a href="#" style="display:block">栏目三</a></li>
</ul>
当然了,还有其他别的方法,连代码都不用写,只需引用一个文件就行:csshover.htc(下载地址:http://www.xs4all.nl/~peterned/htc/csshover3.htc,如果失效,自行百度)
下载好后,只需在代码的<head></head>中间添加下面这段代码,然后就放心大胆的去使用hover吧(也支持focus):
<!--[if lte IE 6]>
       <style type="text/css">
       body { behavior:url("csshover.htc"); }
       </style>
       <![endif]-->
 
我个人还是推荐第二种方法,当然在没有条件允许的情况下,第一种还是比较实用的,毕竟存着一个文件不如牢记于心一种解决办法,这样随时可以用键盘敲出来并解决问题。
 
最后再发自内心说一句话:赶快放弃IE6和XP吧,我们做网页的很累啊。

/*第二种js*/

JS代码:

<script type="text/javascript"><!--//--><![CDATA[//><!--
sfHover =function() {
var sfEls = document.getElementById("nav").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
//--><!]]>
</script>

导航结构代码

<ul id="nav">
<li><a href="#">这是显示的标题1</a>
<ul>
<li><a href="#">这是列表中的内容1</a></li>
<li><a href="#">这是列表中的内容2</a></li>
<li><a href="#">这是列表中的内容3</a></li>
<li><a href="#">这是列表中的内容4</a></li>
</ul>
</li>
<li><a href="#">这是显示的标题2</a>
<ul>
<li><a href="#">这是列表中的内容5</a></li>
<li><a href="#">这是列表中的内容6</a></li>
<li><a href="#">这是列表中的内容7</a></li>
<li><a href="#">这是列表中的内容8</a></li>
</ul>
</li>
</ul>

CSS样式代码

#nav, #nav ul{ /* all lists */
padding: 0;
margin: 0;
list-style: none;
line-height: 1;
}
#nav li{ /* all list items */
float: left;
width: 10em;
}
#nav li ul{ /* second-level lists */
position: absolute;
background: orange;
width: 10em;
left:
-999em; /* using left instead of display to hide menus because display:
none isn‘t read by screen readers
这里用left:-999em的也行,用display:none的也行,看您喜欢用啥 */
}
*+ html #nav li ul{margin: 16px 0 0 -95px;} /* 二级菜单显示位置调整IE7 */
*html #nav li ul{margin: 16px 0 0 -95px;} /* 二级菜单显示位置调整 IE6 */
#nav li:hover ul, #nav li.sfhover ul{
left: auto;/* 如果上面用left的了,那么这就不用改,最多改个数,如果用display:none了,那么这里改成display:block*/
}

时间: 2024-08-29 09:43:34

IE6不支持li:hover的解决办法,一句代码让IE6支持li:hover的相关文章

IE6/IE7下margin-bottom失效兼容解决办法及双倍边距问题

(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-04-08) 一.IE6/IE7下margin-bottom失效兼容解决办法 1.用padding-bottom代替:2.在父标签中加入overflow:hidden:或zoom:100%示例代码: 不正常显示 ul{} li{ list-style:none; float:left; margin:10px;} 1. 你会发现左边10px 变成20px了, 解决办法:在li的CSS中加入:display:inline

IE6不支持圆角效果的解决办法

IE6(7/8)不支持border-radius属性,所以其中的圆角效果显示不出来,可以通过引用ie-css3.htc的方法解决. ie-css3.htc(点击可直接查看) 将文件放在放在页面的根目录下,并在css文件(或者<style>标签)中,加上 body { behavior:url("...ie-css3.htc"); } 放在其他目录下也行,注意路径对即可. 其它问题可参考官网:http://fetchak.com/ie-css3/ IE6不支持圆角效果的解决办

jquery IE6 select.val() bug报错解决办法

原文地址:http://hi.baidu.com/kinghmx/item/395dbac3261292dcef183b52 最近在写一个页面,在出了ie6外的所有浏览器中都正常(ie7,8,9,  firefox, chrome), IE6下提示 “无法设置selected属性.未指明的错误”. 后来发现是jquery 在 ie6 下操作 select控件有BUG. 我程序中是这样使用的: $("#genre").val(0); 改成: setTimeout(function(){ 

WCF不支持 ASP.NET 兼容性 解决办法

错 误提示:无法激活服务,因为它不支持 ASP.NET 兼容性.已为此应用程序启用了 ASP.NET 兼容性.请在 web.config 中关闭 ASP.NET 兼容性模式或将 AspNetCompatibilityRequirements 属性添加到服务类型且同时将 RequirementsMode 设置为“Allowed”或“Required”. 解决办法: 修改相应   服务.svc.cs using System.ServiceModel.Activation ; [AspNetComp

iOS第三方平台不支持64位的解决办法

来源地址:http://blog.csdn.net/sky_2016/article/details/39737279 phone5s才用64位双核苹果A7处理器,所以上线的app必须支持64位环境.但是现在有很多第三方平台,不支持64位容易开成以下类似的错误 Undefined symbols for architecture x86_64: \\\\\\\\\\\\\\\"_OBJC_CLASS_$_QQApiInterface\\\\\\\\\\\\\\\", reference

使用的 SQL Server 版本不支持数据类型“datetime2”的解决办法

错误原因,在使用ado.net entity的时候,entity使用的数据库是sqlserver 2008, 但后来实际使用中使用的数据库是sqlserver 2005, 使用的 SQL Server 版本不支持数据类型“datetime2” The version of SQL Server in use does not support datatype ‘datetime2 解决办法 Open your EDMX in a file editor (or “open with…” in V

CSS中overflow:hidden在ie6、ie7无效不能隐藏解决办法

在我们做前端时会碰到一个固定的宽度当文字超过我们这个固定宽度时我们不换行的同时希望文字隐藏了, 那我们通常会使用overflow:hidden来隐藏文字,但是发现在ie6,ie7下overflow:hidden无效了,那么如何解决这个问题呢? 这就是ie6.ie7 的bug. 解决方法: 当父元素的直接子元素或者下级子元素的样式拥有position:relative属性时,父元素的overflow:hidden属性就会失效.我们在IE 6 7内发现子元素会超出父元素设定的高度,即使父元素设置了o

ie6不支持png图片的解决办法

在head里引入png.js文件 <!--[if lte IE 6]> <script type="text/javascript" src="js/PNG.js"></script> <script> PNG.fix('*'); </script> <![endif]--> png.js文件内容如下: /** * PNG: Adds IE6 support: PNG images for CS

[转载]tomcat的配置文件server.xml不支持中文注释的解决办法

原文链接:http://tjmljw.iteye.com/blog/1500370 启动tomcat失败,控制台一闪而过,打开catalina的log发现错误指向了conf/server.xml,报错信息如下: -------------------------- 05-Dec-2016 20:17:01.903 WARNING [main] org.apache.catalina.startup.Catalina.load Catalina.start using conf/server.xm