jQuery 导航菜单
已经写了好几个关于网页导航菜单的教程了, 我都是用原生 JavaScript 敲的代码, 一方面是为了读者更好地去理解其中的原理, 另一方面是让程序可以在不加载任何 framework 的情况下正常运行. 但是时间长了, 我发现越来越多人问我如何将这些效果集成到一些 JS 框架上, 尤其是 jQuery. 所以, 本节我们不探讨更多的效果, 而是将之前的一些菜单效果用 jQuery 来实现出来.
这次要用 jQuery 实现二级导航菜单, 淡出淡入导航菜单, 滚动导航菜单. 借助 jQuery 的强大动画, 我们需要的代码量非常少.
相关话题:
WordPress 导航菜单
二级导航菜单
淡出淡入导航菜单
滚动导航菜单
多级导航菜单
jQuery 导航菜单
点选式导航菜单 (待定话题)
二级导航菜单
鼠标划过显示菜单, 离开隐藏菜单, 没有能比这个跟简单的了.
jQuery(document).ready(function(){ // 找到所有菜单, 并添加显示和隐藏菜单事件 jQuery('#menus > li').each(function(){ jQuery(this).hover( // 显示菜单 function(){ jQuery(this).find('ul:eq(0)').show(); }, // 隐藏菜单 function(){ jQuery(this).find('ul:eq(0)').hide(); } ); }); });
淡出淡入导航菜单
鼠标悬停显示淡入显示菜单, 离开淡出隐藏菜单. 需要加上延迟处理, 原因请参考请参考如下文章.
// 线程 IDs var mouseover_tid = []; var mouseout_tid = []; jQuery(document).ready(function(){ jQuery('#menus > li').each(function(index){ jQuery(this).hover( // 取消淡出菜单的线程, 延时淡入菜单 function(){ var _self = this; clearTimeout(mouseout_tid[index]); mouseover_tid[index] = setTimeout(function() { jQuery(_self).find('ul:eq(0)').fadeIn(200); }, 400); }, // 取消淡入菜单的线程, 延时淡出菜单 function(){ var _self = this; clearTimeout(mouseover_tid[index]); mouseout_tid[index] = setTimeout(function() { jQuery(_self).find('ul:eq(0)').fadeOut(200); }, 400); } ); }); });
滚动导航菜单
鼠标悬停显示滚动展开菜单, 离开滚动卷起菜单. 需要加上延迟处理, 原因同淡出淡入导航菜单的处理.
// 线程 IDs var mouseover_tid = []; var mouseout_tid = []; jQuery(document).ready(function(){ jQuery('#menus > li').each(function(index){ jQuery(this).hover( // 取消卷起菜单的线程, 延时展开菜单 function(){ var _self = this; clearTimeout(mouseout_tid[index]); mouseover_tid[index] = setTimeout(function() { jQuery(_self).find('ul:eq(0)').slideDown(200); }, 400); }, // 取消展开菜单的线程, 延时卷起菜单 function(){ var _self = this; clearTimeout(mouseover_tid[index]); mouseout_tid[index] = setTimeout(function() { jQuery(_self).find('ul:eq(0)').slideUp(200); }, 400); } ); }); });
演示主题:
以 WordPress 自带主题 default 为基础, 仅做学习参考使用, 修改过的文件有 header.php 和 style.css, 添加了文件 js/menu.js
下载主题: default_with_menubar_6.zip
jQuery 的确好用, 这么简便地就把效果做出来了. 撇开别的不错, 这时间就节省不少. 但这绝对是用来忽悠入门者的, 如果想知道其原理, 还是建议看一下之前的文章, 自己敲几个代码, 那样你会收获更多.
下回预告:
下次要不要谢谢 YUI 的实现方法呢? (Prototype 就算了, 我自己实现的代码结构就是模范 Prototype 的.)
jQuery还没研究过呢,也就看过html(哈哈),css,html5,php等等的,javascript还没来得及看,汗
太牛了。也方便。
学习了,解决了一个问题。thanks
I like Ur website content. But I don't understand what Ur lang. I say thank a lot to neoease for the inove theme.
的确是代码少,实现有方便. 爱死jQurey了.
@QiQiBoY
min-width 对 IE6 无效的.
我知道那个问题, 有时间再改一下. 谢谢...
@Zenoven自由人
哈哈~ 术业有专攻嘛.
@左岸读书
不会吧... 其实我平时用 jQuery 不多, 而且我不喜欢他的语法结构, 图个方便而已.
@Nomessi
晕... 那是什么公司?
@citywatcher
这个我没遇到过, 建议你创建一个新的数据库连接到 WP 上. 另外, 请查看一下 MySQL 是否开了 Strict 模式.
http://wfans.org/forums/thread-3262-1-1.html
请问能不能帮忙看看这个错误,谢谢。
现在公司招前端第一句话就是你用jQuery做过什么大的项目?
最近公司项目要做个显示个人日程的用了JQuery下的fullcalendar,- -!头一次接触JQuery。
JQuery都快成一种标准了!
很不错,简洁明了,实用。
非常简洁啊,很Nice~~
做菜单时非常有用,呵呵。
代码好少哦,这个得收了
学习一下 呵呵 ~
這個不錯,收藏了~回去自己用一下
初学者是比较容易被animation这些东西吸引啦。不过jQuery最方便的地方是比较好的解决了浏览器兼容问题,这比什么花哨效果都强大,如果自己裸敲代码,调试的时候真的好想死……
对JS一窍不通啊。。。前些天才知道JS和JAVA一点关系都没。。。我那个汗啊
嗯~ 研究研究先~
你有没发现将浏览器宽度缩小到小于你的博客宽度浏览你的博客,头部和尾部会出现背景图片截断现象?应该给放头部和尾部的容器设置个min-width就可以解决的吧。。min-width:960px。。。
先看看这个,以后再看原生的(不用框架的。。)~~
沙发没了,学习了。
占位 学习JQuery。
顺便把地板也占了 !
头一次这么近哈!
先沙发