zoukankan      html  css  js  c++  java
  • 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"), "");
    }
    }
    }
    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;
    10em;
    }
    #nav li ul{ /* second-level lists */
    position: absolute;
    background: orange;
    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*/
    }

  • 相关阅读:
    htpasswd命令
    GitHub访问速度慢的解决方法
    easyui datagrid 首次不加载做法
    Excel日常操作
    补偿接口中循环一直执行sql的问题
    rabbitMq无法消费发送的q的问题
    Unicode与中文转换工具类方法(转)
    idea 一些插件配置
    线程安全的集合类、CopyOnWrite机制介绍(转)
    java websocket学习
  • 原文地址:https://www.cnblogs.com/tnnyang/p/4123426.html
Copyright © 2011-2022 走看看