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方法确可以正常工作。


猜你喜欢
- 12月3日上午消息,28商机在线(28.com)母公司中网在线(OTC:CHNT)已在美国纽约OTCBB市场通过借壳的方式悄然挂牌交易。财报
- 上次装好了PHP,MySQL,还缺个MySQL图形化管理工具。MySQL图形化管理工具有很多,phpmyadmin无疑是必装的,国外空间大多
- dedecms5.1sp1 一个tag只能对应一篇文章 其它文章添加TAG相同时不显示不添加文章到TAG目录解决办法:在后台的【SQL命令运
- 时间服务器的IP为:192.168.10.1 1). # rpm -ivh ntp-4.1.2-4.EL3.1.i386.rpm 2). #
- SMTP提供一种可靠的有效的传送机制,它用于传送电子邮件。虽然十几年来,它的作用已经有目共睹,可是对它功能的扩充也是必不可少的。对SMTP服
- 以Twitter为代表的微博客是今年非常火的社交网络,在国内的发展也在上半年一度非常迅猛,虽然现在大多数微博客都因为种种原因无法访问,但这并
- 在默认情况下,我们一般给每个站点的web目录的权限为IIS用户的读取和写入,如图:但是我们现在为了将SQL注入,上传漏洞全部都赶走,我们可以
- vmware是一款主流的虚拟机软件,可以真正“同时”运行多个操作系统在主系统的平台上,就像标准Win
- google adsense的搜索广告,有二种形式,一是传统的搜索框,二是不久前推出的“搜索联盟”。这二种有何区别呢?下面做一下介绍。一、搜
- Godaddy用户如何使用File Manager删除一个目录呢?整理了详细的教程供您参考。1、 登陆你的Account Manager.
- 自从还了Mac 后,原来的笔记本就闲置了下来,这台笔记本的配置还是不错的,可以装几个虚拟机用来平时的搭建小规模集群的实践。准备工作安装VMW
- 每个站长在建站之初,都很明确自己网站的定位及网站的目标客户群,那么,在具体的推广工作中,我们该如何寻找自己的目标客户,以便更有针对性的推广自
- 打开“开始”-〉“运行”在对话框中输入cmd然后回车。win
- 关于服务器安全,新手最常遇到的一个问题就是:该选择哪种防火墙?面对种类如此繁多的服务器防火墙,在选择的时候,是考虑厂商的知名度还是防火墙本身
- 许多web浏览器都比IE更易于使用,并且不会那么容易就受到黑客和其它威胁的攻击。 大家似乎很难想起来还有许多可以替代IE的web
- 线程线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。可以把线程看成是操作系统分配CPU时间的基本单元。一个进程可以拥有一个至多个
- 由于ASP脚本系统在互联网上广泛的应用,针对ASP系统的脚本攻击越来越流行。在这些攻击中,攻击者多是利用注入、跨站、暴库、上传、cookie
- IIS服务器出错的原因是复杂的。如服务启动失败、IIS进程中断或者站点不能启动这些错误都会在系统日志中记录一个错误事件。不论IIS出现何种错
- 如上图 准备好该准备的食材(ps:其中的hadoop-3.1.2-src更改为hadoop-3.1.2src为源文件的意思? 反
- 加密版Google搜索终于上线了,地址当然就是https://www.google.com。通过加密搜索,一切你发送出去的搜索关键字都会以加