Jquery实现纵向横向菜单


Posted in Javascript onJanuary 24, 2016

第一个菜单实现的是点击菜单项显示相应的子菜单项,三角变为向下的三角。下面的菜单鼠标移动到菜单项显示对应的子菜单项,鼠标移开子菜单消失。

下面介绍它的代码部分:

html代码:

head代码部分添加标题及引用:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><head> 
  <title>JQuery实战-菜单效果</title> 
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  <link type="text/css" rel="stylesheet" href="css/menu.css" /> 
  <script type="text/javascript" src="js/jquery.js"></script> 
  <script type="text/javascript" src="js/menu.js"></script> 
</head></span>

body部分编辑菜单项内容,通过嵌套的ul和li来表示,菜单最外层为ul,一层每个主菜单放在一个li中。如果有子菜单,在这个主菜单的li中建立新的ul,再依次嵌套就可以构建多层的菜单。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><body> 
    <ul> 
      <li class="main"> 
          <a href="#">菜单项1</a> 
        <ul style="display:none;"> 
          <li> 
            <a href="#">子菜单项11</a> 
          </li> 
          <li> 
            <a href="#">子菜单项12</a> 
          </li> 
        </ul> 
      </li> 
      <li class="main"> 
        <a href="#">菜单项2</a> 
        <ul> 
          <li> 
            <a href="#">子菜单项21</a> 
          </li> 
          <li> 
            <a href="#">子菜单项22</a> 
          </li> 
        </ul> 
      </li> 
      <li class="main"> 
        <a href="#">菜单项3</a> 
        <ul> 
          <li> 
          <a href="#">子菜单项31</a> 
          </li> 
          <li> 
            <a href="#">子菜单项32</a> 
          </li> 
        </ul> 
      </li> 
    </ul> 
     
    <br/> 
    <ul> 
      <li class="hmain"> 
        <a href="#">菜单项1</a> 
        <ul> 
          <li> 
            <a href="#">子菜单项11</a> 
          </li> 
          <li> 
            <a href="#">子菜单项12</a> 
          </li> 
        </ul> 
      </li> 
      <li class="hmain"> 
        <a href="#">菜单项2</a> 
        <ul> 
          <li> 
            <a href="#">子菜单项21</a> 
          </li> 
          <li> 
            <a href="#">子菜单项22</a> 
          </li> 
        </ul> 
      </li> 
      <li class="hmain"> 
        <a href="#">菜单项3</a> 
        <ul> 
          <li> 
          <a href="#">子菜单项31</a> 
          </li> 
          <li> 
            <a href="#">子菜单项32</a> 
          </li> 
        </ul> 
      </li> 
    </ul> 
     
  </body></span>

css代码部分
1.浏览器中的ul和li元素默认情况下文字前都有圆点标识符,li元素会有缩进
2.list-style属性值为none,可清除ul和li前面的小圆点。
3.清除缩进值,padding和margin都为0,其中IE6 IE7需要把margin为0的时候才可以清除缩进值。

<span style="font-family:KaiTi_GB2312;font-size:18px;">ul,li{ 
  list-style:none;/* //清除ul和li上默认的小圆点 */ 
 
} 
ul{ 
  /* 清除子菜单的缩进值 */ 
  padding:0; 
  margin:0; 
} 
.main,.hmain{ 
  background-image:url(../images/title.gif);/*指定背景图*/ 
  background-repeat:repeat-x; 
  width:120px; 
} 
li{ 
  background-color:#EEEEEE; 
} 
a { 
  /*取消所有的下划线*/ 
  text-decoration:none; 
  padding-left:20px;  
   display:block; 
  display:inline-block;/* 解决ie6不兼容的问题 */  
  width:100px; 
  padding-top:3px; 
  padding-bottom:3px; 
} 
.main a,.hmain a { 
  color:white;/*主菜单标签颜色为白色*/ 
  background-image:url(../images/collapsed.gif); 
  background-repeat:no-repeat; 
  background-position:3px center; /* 图片位置在中间 */ 
} 
.main li a ,.hmain li a{ 
  /* 子菜单项 */ 
  color:black; 
  background-image:none;/* 不使用图片 */ 
  padding-left:18px;  
   
} 
.main ul,.hmain ul{ 
  /* 子菜单隐藏 */ 
   display:none;  
} 
.hmain{ 
  float:left;/*浮动显示*/ 
  margin:1px; 
}</span>

menu.js代码:
1.main a选择使用了.main这个class的元素内部所有的a节点
2.main>a选择.main子节点中的a节点

<span style="font-family:KaiTi_GB2312;font-size:18px;">$(document).ready(function(){ 
  //页面的Dom已经装载完成时,执行的代码 
   $(".main > a,.hmain a").click(function(){ 
     //找到主菜单项对应的子菜单项 
    var ulNode = $(this).next("ul"); 
    // //根据情况收缩菜单 
    // if(ulNode=$.css("display") == "none"){ 
      // ulNode.css("display","block"); 
    // }else{ 
      // ulNode.css("display","none"); 
    // } 
     
    // ulNode.show("normal");//设置展开的速度,可以是nomal,slow,fast 
    // ulNode.hide(); 
     // ulNode.toggle();//toggle设置展开或者收缩 
    //卷帘效果,向上或者向下 
    // ulNode.slideDown(); 
    // ulNode.slideUp; 
    ulNode.slideToggle(); 
  }); 
  //麻烦的方法 
  // $(".hmain > a").hover(function(){ 
    // $(this).next("ul").slideDown(); 
  // }.Function(){ 
    // var ulNode=$(this).next("ul"); 
    // var timeoutId =setTimeout(function(){ 
     
// })     
      // ulNode.slideUp(); 
  // },300); 
  // ulNode.hover(function(){ 
    // clearTimeout(timeoutId); 
  // }.function(){ 
    // $(this).slideUp(); 
  // }); 
 
  /********实现鼠标移动到指定主菜单后子菜单自动显示*****/ 
   
  $(".hmain").hover(function(){ 
    $(this).children("ul").slideDown(); 
  },function(){ 
    $(this).children("ul").slideUp(); 
  }); 
   
}); 
  /* 
  *修改主菜单的指示图标随着子菜单的变化而变化 
  * 
  */ 
function changeIcon(mainNode) { 
  if (mainNode) { 
    if (mainNode.css("background-image").indexOf("collapsed.gif") >= 0) { 
      mainNode.css("background-image","url('images/expanded.gif')"); 
    } else { 
      mainNode.css("background-image","url('images/collapsed.gif')"); 
    } 
  } 
} 
</span>

以上就是本文的全部内容,希望能够帮助大家更好的实现制作菜单效果。

Javascript 相关文章推荐
JavaScript中的History历史对象
Jan 16 Javascript
JavaScript中的连字符详解
Nov 28 Javascript
JavaScript打印网页指定区域的例子
May 03 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
Jun 14 Javascript
基于canvas实现的钟摆效果完整实例
Jan 26 Javascript
初探js和简单隐藏效果的实例
Nov 23 Javascript
webpack打包js文件及部署的实现方法
Dec 18 Javascript
Vuepress 搭建带评论功能的静态博客的实现
Feb 17 Javascript
JavaScript使用表单元素验证表单的示例代码
Aug 20 Javascript
Vue组件间的通信pubsub-js实现步骤解析
Mar 11 Javascript
JS数组reduce()方法原理及使用技巧解析
Jul 14 Javascript
javascript实现移动端触屏拖拽功能
Jul 29 Javascript
JavaScript、jQuery与Ajax的关系
Jan 24 #Javascript
JavaScript jquery及AJAX小结
Jan 24 #Javascript
基于JavaScript短信验证码如何实现
Jan 24 #Javascript
详解JS面向对象编程
Jan 24 #Javascript
js中实现字符串和数组的相互转化详解
Jan 24 #Javascript
JavaScript基础知识之方法汇总结
Jan 24 #Javascript
Javascript实现单例模式
Jan 24 #Javascript
You might like
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
JavaScript 模拟用户单击事件
2009/12/31 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
php 修改密码实现代码
2017/05/24 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
介绍Python中的__future__模块
2015/04/27 Python
python编写爬虫小程序
2015/05/14 Python
Python线程详解
2015/06/24 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
Python PIL库图片灰化处理
2020/04/07 Python
Python爬虫与反爬虫大战
2020/07/30 Python
python如何停止递归
2020/09/09 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
高中毕业生生活的自我评价
2013/12/08 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python