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+Ajax+Json的高效分页实现代码
Oct 29 Javascript
禁止页面刷新让F5快捷键及右键都无效
Jan 22 Javascript
node.js中的favicon.ico请求问题处理
Dec 15 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
Dec 20 Javascript
javascript强制点击广告的方法
Feb 06 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
Feb 18 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
JQuery中属性过滤选择器用法实例分析
May 18 Javascript
图解js图片轮播效果
Dec 20 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
Apr 10 jQuery
Vue验证码60秒倒计时功能简单实例代码
Jun 22 Javascript
Node 模块原理与用法详解
May 13 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处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
golang与PHP输出excel示例
2016/07/22 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
iframe 异步加载技术及性能分析
2011/07/19 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
Python isinstance判断对象类型
2008/09/06 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
python处理按钮消息的实例详解
2017/07/11 Python
python实现Floyd算法
2018/01/03 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
测控技术与仪器个人求职信范文
2013/12/30 职场文书
《画》教学反思
2014/04/14 职场文书
防灾减灾标语
2014/10/07 职场文书
导游词之凤凰古城
2019/10/22 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python