jQuery纵向导航菜单效果实现方法


Posted in Javascript onDecember 19, 2016

本文实例讲述了jQuery纵向导航菜单效果实现方法。分享给大家供大家参考,具体如下:

效果如下:

jQuery纵向导航菜单效果实现方法

核心代码如下:

$( document ).ready( function(e){
  var $catCont = $( ".cat-cont" );  //二级菜单div
  var $catList = $( ".J_Cat" );    //一级菜单li
  $catList.on( "mouseenter", function(){
    var index = $( this ).index();
    var $curCatList = $( ".cat-cont-bd>li:eq(" + index + ")" );     //鼠标移上去对应的二级菜单的li
    $catList.removeClass( "selected selected-prev" );
    $( this ).addClass( "selected" ).prev().addClass( "selected-prev" );
    $catCont.show();
    $curCatList.css( "display", "list-item").siblings().css( "display", "none" );
    var viewHeight = $( window ).height();
    var catOffsetTop = $( this ).offset().top - $( window ).scrollTop();
    var catBottomGap = viewHeight - catOffsetTop;
    var catPositionTop = $( this ).position().top;
    var catContHeight = $catCont.height();
    if( catBottomGap >= catContHeight ) {
      $catCont.css( "top", catPositionTop );
    }
    if( catBottomGap < catContHeight && viewHeight >= catContHeight ) {
      $catCont.css( "top", catPositionTop - ( catContHeight - catBottomGap ) - 20 );
    }
    if( catBottomGap < catContHeight && viewHeight < catContHeight ) {
      $catCont.css( "top", catPositionTop );
    }
    if( catBottomGap <= 66 ) {
      $catCont.css( "top", catPositionTop - catContHeight + 33 );
    }
  }).on( "mouseleave", function( event ){
    if( !$( event.relatedTarget ).hasClass( "cat-cont-bd" ) ){  //交互灾难:离开一级菜单划不到二级菜单,如何知道离开一级菜单后进入的是二级菜单?jquery提供属性:event.relatedTarget(离开后进入的对象)
      $( this ).removeClass( "selected selected-prev" );
      $catCont.hide();
    }
  });
  $catCont.on( "mouseleave", function(){
    $catCont.hide();
    $catList.removeClass( "selected selected-prev" );
  });
});

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
JavaScript遍历table表格中的某行某列并打印其值
Jul 08 Javascript
浅谈javascript中的闭包
May 13 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
Jan 14 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
Oct 04 Javascript
Bootstrap table使用方法详细介绍
Dec 09 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
微信小程序实现发送验证码按钮效果
Dec 20 Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
小程序自定义弹框效果
Nov 16 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
简单理解js的冒泡排序
Dec 19 #Javascript
JS瀑布流实现方法实例分析
Dec 19 #Javascript
移动端日期插件Mobiscroll.js使用详解
Dec 19 #Javascript
JavaScript闭包和范围实例详解
Dec 19 #Javascript
JS前端笔试题分析
Dec 19 #Javascript
利用vue实现模态框组件
Dec 19 #Javascript
JS中如何实现复选框全选功能
Dec 19 #Javascript
You might like
PHP MSSQL 存储过程的方法
2008/12/24 PHP
PHP 简单日历实现代码
2009/10/28 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
php常用Stream函数集介绍
2013/06/24 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
python简单操作excle的方法
2018/09/12 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
办公室前台岗位职责范本
2013/12/10 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
小学音乐教学反思
2014/02/05 职场文书
教师职位说明书
2014/07/29 职场文书
统计员岗位职责范本
2015/04/14 职场文书
拙作再改《我的收音机情缘》
2022/04/05 无线电