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图片轮播的具体实现
Sep 11 Javascript
javascript实用小函数使用介绍
Nov 11 Javascript
动态读取JSON解析键值对的方法
Jun 03 Javascript
javascript自动生成包含数字与字符的随机字符串
Feb 09 Javascript
深入浅析AngularJS和DataModel
Feb 16 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
jquery对所有input type=text的控件赋值实现方法
Dec 02 Javascript
jQuery EasyUI Draggable拖动组件
Mar 01 Javascript
javascript少儿编程关于返回值的函数内容
May 27 Javascript
layui从数据库中获取复选框的值并默认选中方法
Aug 15 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 Javascript
ES6 Set结构的应用实例分析
Jun 26 Javascript
简单理解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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
python字典的遍历3种方法详解
2019/08/10 Python
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
师范生实习自我鉴定
2013/11/01 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
光荣之路观后感
2015/06/12 职场文书
珍爱生命主题班会
2015/08/13 职场文书
我的中国梦主题班会
2015/08/14 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电