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 相关文章推荐
javascript编程起步(第七课)
Jan 10 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
Jun 23 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 Javascript
jQuery实现弹出窗口中切换登录与注册表单
Jun 05 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
AngularJS Phonecat实例讲解
Nov 21 Javascript
jquery实现自定义图片裁剪功能【推荐】
Mar 08 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
Jul 04 Javascript
JavaScript实现多重继承的方法分析
Jan 09 Javascript
Vue3.0的优化总结
Oct 16 Javascript
js实现限定范围拖拽的示例
Oct 26 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
Dec 08 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恢复数组的key为数字序列的方法
2015/04/28 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
JS继承 笔记
2011/07/13 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
python中实现php的var_dump函数功能
2015/01/21 Python
简单的Python2.7编程初学经验总结
2015/04/01 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
python将视频转换为全字符视频
2019/04/26 Python
python实现串口通信的示例代码
2020/02/10 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
学校安全管理责任书
2014/07/23 职场文书
安全生产年活动总结
2014/08/29 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
公司管理建议书
2015/09/14 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
python状态机transitions库详解
2021/06/02 Python
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
MySQL池化框架学习接池自定义
2022/07/23 MySQL