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 操作下拉列表框实现代码
Feb 22 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
Dec 12 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
jQuery在ul中显示某个li索引号的方法
Mar 17 Javascript
Jquery实现遮罩层的方法
Jun 08 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
Nov 24 Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 Javascript
js定时器实例分享
Dec 20 Javascript
js多个物体运动功能实例分析
Dec 20 Javascript
浅谈$_FILES数组为空的原因
Feb 16 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
Aug 16 Javascript
JavaScript中concat复制数组方法浅析
Jan 20 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
php之Memcache学习笔记
2013/06/17 PHP
php导入模块文件分享
2015/03/17 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP分享图片的生成方法
2018/04/25 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
日语翻译个人求职的自我评价
2013/10/14 职场文书
总经理检讨书
2014/09/15 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
硕士学位论文评语
2014/12/31 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers
MySQL数据库查询之多表查询总结
2022/08/05 MySQL