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 相关文章推荐
收集的网上用的ajax之chat.js文件
Apr 08 Javascript
初窥JQuery-Jquery简介 入门了解篇
Nov 25 Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
Jan 11 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
AugularJS从入门到实践(必看篇)
Jul 10 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 Javascript
js数据类型检测总结
Aug 05 Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 Javascript
JS开发常用工具函数(小结)
Jul 04 Javascript
vue quill editor 使用富文本添加上传音频功能
Jan 14 Javascript
vue学习笔记之给组件绑定原生事件操作示例
Feb 27 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 adodb操作mysql数据库
2009/03/19 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
PHP自定义多进制的方法
2016/11/03 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
详解Python locals()的陷阱
2019/03/26 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python中常用的os操作汇总
2020/11/05 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
毕业生简单求职信
2013/11/19 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技