li:hover在ie6下失效的解决方案

li:hover在ie6下是无效的,它只在ie7以下版本有效.要解决这个问题有两个解决方法.一个是用js来解决,但是这种方法我不喜欢,因为它必需把js代码和css代码都放在html文件中.第二种是在每个li外面包裹一个 加了IE6条件注释的 用A包裹了的table

类似于:
HTML code
<!--[if lte IE
6]>
<a><table><tr><td>
<![endif]-->
<li>xxxxxxxxxx</li>
<!--[if
lte IE
6]>
</td></tr></table></a>
<![endif]-->

js方法的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8"
/>
<title>by commy </title>
<script
language="javascript">
stuHover = function() {
var cssRule;
var
newSelector;
for (var i = 0; i < document.styleSheets.length; i++)
  
for (var x = 0; x < document.styleSheets[i].rules.length ; x++)
   
{
    cssRule = document.styleSheets[i].rules[x];
    if
(cssRule.selectorText.indexOf("LI:hover") != -1)
    {
     newSelector =
cssRule.selectorText.replace(/LI:hover/gi, "LI.iehover");
    
document.styleSheets[i].addRule(newSelector , cssRule.style.cssText);
   
}
   }
var getElm =
document.getElementById("nav").getElementsByTagName("LI");
for (var i=0;
i<getElm.length; i++) {
   getElm[i].onmouseover=function() {
   
this.className+=" iehover";
   }
   getElm[i].onmouseout=function()
{
    this.className=this.className.replace(new RegExp(" iehover\\b"),
"");
   }
}
}
if (window.attachEvent) window.attachEvent("onload",
stuHover);
</script>
<style type="text/css">
li:hover {
background:#00CC00; display:block; }
</style>
</head><body
>
<div
id="nav">
<ul><li>让IE6支持li:hover的JS代码</li></ul>
</div>
</body>
</html>

时间: 2024-10-27 08:16:10

li:hover在ie6下失效的解决方案的相关文章

DD_belatedPNG,IE6下PNG透明解决方案

我们知道IE6是不支持透明的PNG的,这无疑限制了网页设计的发挥空间. 然而整个互联网上解决这个IE6的透明PNG的方案也是多不胜数,从使用IE特有的滤镜或是e­xpression,再到javascript+透明GIF替代.但是这些方法都有一个缺点,就是不支持CSS中backgrond-position与background-repeat. 而我今天介绍DD_belatedPNG,只需要一个理由,就是它支持backgrond-position与background-repeat.这是其他js插件

jQuery的$.getJSON方法在IE浏览器下失效的解决方案

$.getJSON在IE下默认会使用浏览器缓存,所以导致数据不正确或者异常,解决方案就是在使用该方法前关闭缓存,使用完后再重新打开缓存即可. 1 <?php 2 $.ajaxSetup({ cache: false }); 3 $.getJSON("ajax.php",function(data,item) { 4 // 处理逻辑代码 5 $.ajaxSetup({ cache: true }); 6 }); 7 ?> ok啦

IE6下CSS常见兼容性问题及解决方案

1. 在IE6元素浮动,如果宽度需要内容撑开,就给里面的块元素加浮动. 2. IE6下最小高度问题:在IE6下元素高度小于19px的时候,会被当作19px处理.解决方案:给元素加 overflow:hidden. 3. border:1px dotted #000: 1px dotted 在IE6下不支持 解决方案:切背景平铺 4. margin传递:解决方案:a.父级或自己浮动; b.给元素加 overflow:hidden;zoom:1; 5. 在IE6下父级有边框的时候,子元素的margi

【css】a:hover 设置上下边框在 ie6 和 ie7 下失效

前段时间在写样式的时候发现了这个问题,虽然当时就解决了这个 bug 不过还是记录下,以免再次出现这样的问题. demo 代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"

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标记

浮动元素的兼容以及ie6下li标签的部分兼容性问题

清除浮动的方法有许多比较常用的是 .clear{zoom: 1;} .clear:after{content: "";display: block;clear: both;} after伪类元素末尾添加内容Ie6,7不兼容可以用zoom来解决(zoom缩放会触发ie下的haslayout使元素根据自身内容计算宽高但火狐不支持但可以通过after伪类解决) 两者结合解决的浏览器不兼容的问题: ie6下li标签的部分兼容性问题: 可以通过给li标签加 vertical-align: top

IE6/IE7下:inline-block解决方案

IE6/IE7下对display:inline-block的支持性不好. 1.inline元素的display属性设置为inline-block时,所有的浏览器都支持: 2.block元素的display属性设置为inline-block时,IE6/IE7浏览器是不支持的: 对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行,允许空格.(准确地说,应用此特性的元素现为内联对象,周围元素保持在同一行,但可以设置宽度和高度等块元素的属性) IE中对内联元素使用displ

IE6下position:fixed不支持问题及其解决方案

IE6有诸多奇葩,不支持position:fixed就是其中之一.所以在做一些比如固定在顶部或者底部或者固定元素的效果时需要考虑兼容IE6的这个问题.解决方案是用Ie6的hack. *html {/* 只有IE6支持 */ background-image: url(about:blank); background-attachment: fixed; /* 固定背景 */ } #box { /* 非IE6浏览器使用固定元素 */ position: fixed; top: 0; left: 0

IE6下不支持除a以外的hover效果的解决办法

废话不说,直接上方法! 1.下载csshover.htc文件: 代码如下: <attach event="ondocumentready" handler="parseStylesheets" /> <script language="JScript"> /** * Pseudos - V1.30.050121 - hover & active * ---------------------------------