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 相关文章推荐
一个js拖拽的效果类和dom-drag.js浅析
Jul 17 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
Jul 26 Javascript
js获取location.href的参数实例代码
Aug 02 Javascript
一个不错的js html页面倒计时可精确到秒
Oct 22 Javascript
jquery实现勾选复选框触发事件给input赋值
Feb 01 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
Aug 06 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
May 26 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
Jun 21 Javascript
CountUp.js数字滚动插件使用方法详解
Oct 17 Javascript
vscode调试node.js的实现方法
Mar 22 Javascript
在Vue中使用Echarts实例图的方法实例
Oct 10 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
用PHP实现验证码功能
2006/10/09 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
医院办公室主任职责
2013/12/29 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
青春寄语大全
2014/04/09 职场文书
初一数学教学反思
2016/02/17 职场文书
因个人工作失误检讨书
2019/06/21 职场文书