WordPress3.0无限级分类下拉菜单制作方法

时间:2011-12-02 12:45:19 

帮朋友做个小导航时用到了下拉菜单,话说WordPress3.0以上版本的”wp_nav_menu()”真是好用,加上主题自定义菜单的设置简直可以说是完美的网站导航。

涉及到下拉菜单制作的方法最核心的还是鼠标移动到上面的处理。下面是调用wp_nav_menu()函数后的HTML结构(做解释用):

<div class="menu-菜单名-container">
    <ul class="menu" id="menu-菜单名">
        <li class="menu-tiem"><a href="#">菜单项目1</a>
            <ul class="sub-menu">
                <li><a href="#">子菜单项目1-1</a></li>
                <li><a href="#">子菜单项目1-2</a></li>
                 …
            </ul>
        </li>
        <li><a href="#">菜单项目2</a></li>
    </ul>
</div>

这是一种很经典很优雅的导航HTML代码,在IE6以上以及标准浏览器中要实现下拉效果只用一句CSS就能搞定。比如下面的示例代码(可自定义):

.menu li a { float:left; height:35px; width:100px;/*菜单高度与宽度*/ line-height:35px; text-align:center; color:#ccc; text-align:center; }

.menu li { float:left; height:1%; background:#000; }

.menu-sjys-container { position:absolute; z-index:1000;}

.menu li ul li { clear:both; border-bottom:1px solid #333; border-right:none; }

.menu-item { position:relative; border-right:1px dotted #333; }

.menu-item:hover>.sub-menu{ display:block; /*下拉效果只用到这一段代码*/ }

.sub-menu { position:relative; left:1px; margin:0; z-index:101; display:none;/*一般情况下隐藏子菜单*/ }

.sub-menu ul.sub-menu { position:absolute; left:100px; top:0;}

上面的这两段代码在IE6以上以及标准浏览器中表现的很完美,原因是IE6这种老浏览器还不支持任何标签的伪类属性,即htmlTag:hover。所以为了兼容我们又不得不用JS来实现(纯CSS亦可)。我大概写了一段JS可以勉强达到效果,但不知道为什么在IE中切换菜单时会有闪动的感觉,这个得求教JS高手了哈。

<!–[if lt IE 7]>
<script type="text/javascript">
//<![CDATA[
/*导航联动效果*/
(function(){
function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}
function hoverSubMenu(node, flag) {
    node.onmouseover = function() {
        var subMenu = getElementsByClass("sub-menu", this)[0];
        if (subMenu) {
            subMenu.style.display = "block";
        }
    }
    node.onmouseleave = function() {
        var subMenu = getElementsByClass("sub-menu", this)[0];
        if (subMenu) {
            subMenu.style.display = "none";
        }
    }
}
var menuItems = getElementsByClass("menu-item");
for (var i=0; i<menuItems.length; i++) {
    hoverSubMenu(menuItems[i], i);
}
})();
//]]>
</script>
<![endif]—>

问题在于W3C对onmouseout事件处理方法不是很理想,微软IE支持的onmouseleave方法确可以正常工作。

原文地址:http://www.keelii.com/wordpress-wp-nav-menu/

标签:WordPress,分类,下拉菜单
0
投稿

猜你喜欢

  • GG收入半月过两千,竟然到现在都没被K

    2007-11-25 11:56:00
  • WindowsIIS6安全保护贴—URL授权全攻略(1)

    2007-09-20 13:47:00
  • 报告称亚马逊Kindle阅读器今年销量将达55万

    2009-12-03 10:03:00
  • 如何添加管理Discuz!7.0论坛任务

    2009-02-15 09:43:00
  • 关于AdSense 推介计划更新的进一步说明

    2008-01-22 12:50:00
  • 美国 Lunarpages等六大主机空间的特点综述

    2010-03-22 08:45:00
  • 改变草根站长的命运

    2007-09-28 11:44:00
  • Kindle杀手Nook横空出世:装Android系统(图)

    2009-10-28 10:06:00
  • 张赟:揭露SEO的主心骨 SEO将不再神秘

    2009-09-08 11:30:00
  • WIN2003服务器安全配置终极技巧(2)

    2007-11-12 14:11:00
  • IIS6.0应用程序池的性能优化和设置

    2010-07-04 13:27:00
  • 草根创业三年磨一剑 香自苦寒

    2009-02-05 18:27:00
  • 淘宝技术发展(引言)

    2012-03-05 20:07:29
  • Service Unavailable第六个原因

    2009-04-30 13:24:00
  • Apache+PHP5.0+GD+Zend+Mysql的配置

    2010-05-07 18:27:00
  • DedeCmsV5.1函数及文件参考手册

    2009-02-20 16:23:00
  • 简单介绍一下今天流行的五个网站推广方法

    2009-05-15 11:15:00
  • 你的账房先生 使用谷歌Analytics分析网站

    2008-12-16 13:56:00
  • SEO新手教程:Title的写法

    2007-08-13 11:10:00
  • 谁能留住上帝:站长请注意你网站的服务态度

    2007-09-26 09:25:00
  • asp之家 网站运营 m.aspxhome.com