$(function() {

scrollgen({//调用 全部可选参数 导航栏默认为 .nav

navChild: ‘.nav li‘, //导航栏子集 li

navFather: ‘.con‘, //导航栏父级

nav: ‘.nav‘, //导航栏ul

active: ‘.active‘, //被选中后的样式

control: ‘.item‘, //监听的元素

//isFollow: true //默认为false 为全部显示 false为tab切换 //true 为全部显示, 监视滚动条跟随

})functionscrollgen(obj) {//默认参数

var objDefault ={

navChild: $(‘.nav‘).children(), //默认获取子节点

navFather: $(‘.nav‘).parent(), //默认获取父级

nav: $(‘.nav‘),

active: $(‘.active‘),

control: $(‘.nav‘).parent().parent().next().children(),

};if(!obj) {

obj={}

}

$.extend(obj, objDefault);var $navChild =$(obj.navChild),

$navFather=$(obj.navFather),

$nav=$(obj.nav),

$active=$(obj.active),

active= $active[0].className,

$control=$(obj.control),

isFollow= obj.isFollow || false; //默认为false

$navChild.eq(0).addClass(active).siblings().removeClass(active);//初始值为第一个li选中

$navFather.animate({

scrollLeft:0},200)var nh = $nav.offset().top, //获取导航栏在文档中的高度

sh = $(document).scrollTop(); //获取滚轮高度

var start_nH =$nav.offset().top

index= $navChild.index() + 1

//动态设置nav 宽度

$nav.width(function() {return $navChild.width() * index + 10 + ‘px‘;

})var Harr = [], //存储item高度容器

Warr = []; //存储nav li offsetleft容器

$control.each(function(index, el) {

Harr.push(el.offsetTop);

})

$navChild.each((index, el)=>{

Warr.push(el.offsetLeft);

})if(isFollow == false) {

$control.eq(0).css({‘display‘: ‘block‘}).siblings().css({‘display‘: ‘none‘});

$navChild.click(function() {var i = $(this).index()

$control.eq(i).css({‘display‘: ‘block‘}).siblings().css({‘display‘: ‘none‘});

$(‘html,body‘).animate({

scrollTop: $control.eq(i).offset().top- $nav.height() - 10},400);

$navChild.eq(i).addClass(active).siblings().removeClass(active);var item = $("." +active);var itemOffset =item.offset();//元素离 scrollLeft等于0 时的距离

var itemOffsetLeft = itemOffset.left +$navFather.scrollLeft();//scrollLeft等于0,居中时的offsetLeft

var centerLeft = ($navFather.width() - item.width()) / 2;

$navFather.stop().animate({

scrollLeft: itemOffsetLeft-centerLeft

},200)

})

}

$(window).scroll(function() {

sh=$(document).scrollTop();if($(window).scrollTop() >=nh) {

$navFather.css({‘position‘: ‘fixed‘,"top": ‘0‘});

Harr.forEach((n, i)=>{if($(window).scrollTop() >= n - $nav.height() - 15) {if(isFollow) {

$navChild.eq(i).addClass(active).siblings().removeClass(active);

}

}

});//以下是导航跟随逻辑,

//思路:计算出scrollLeft =0 时 元素离文档最左侧的距离 - 滚动后元素离 scrollLeft =0 时 元素离文档最左侧的距离 =滚动距离

var item = $("." +active);var itemOffset =item.offset();//元素离 scrollLeft等于0 时的距离

var itemOffsetLeft = itemOffset.left +$navFather.scrollLeft();//scrollLeft等于0,居中时的offsetLeft

var centerLeft = ($navFather.width() - item.width()) / 2;

$navFather.stop().animate({

scrollLeft: itemOffsetLeft-centerLeft

})

}else{

$navFather.css({‘position‘: ‘absolute‘,"z-index": ‘7‘})

}

});

$navChild.click(function() {var i = $(this).index()var offsetH =$control.eq(i).offset().top;

$(‘html,body‘).animate({

scrollTop: $control.eq(i).offset().top- $nav.height() - 10},500)

})

}

})

css导航栏跟随,改良版 导航栏自动跟随(示例代码)相关推荐

  1. python开发音乐播放器教程_python开发简易版在线音乐播放器示例代码

    在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数 ...

  2. html文字滑动时改变颜色,css实现滚动时选中区域字体颜色加深的示例代码

    在封装日期选择器时,需要选中时字体颜色加深,先看一下实现后的效果 可以看到加深的不是整个文字,而是中间那片区域今天聊的重点不在选择器的封装,主要看这个样式效果,想了解此组件的实现思路可以看之前的文章日 ...

  3. 【CSS】课程网站横版导航栏 ( 横版导航栏测量及样式 | 代码示例 )

    文章目录 一.盒子测量及样式 1.总体盒子测量及样式 2.左侧盒子测量及样式 3.中间盒子测量及样式 4.右侧盒子测量及样式 二.横版导航栏代码示例 1.HTML 标签结构 2.CSS 样式 3.显示 ...

  4. java摄像头跟随_一种摄像头自动跟随人脸转动的控制方法与流程

    本发明涉及一种摄像头自动跟随人脸转动的控制方法. 背景技术: 目前,随着人类科学技术的不断发展,人脸识别技术在人们日常生活中越来越普及,无论在人工智能研究还是公共安全应用方面,人脸识别技术一直是一项前 ...

  5. html5 语音导航,诺基亚推出HTML5版导航地图

    诺基亚在官方博客中正式宣布,该移动网站支持所有手机设备的浏览器,并具有语音导航功能. 该网站支持iPhone.iPad.Android以及诺基亚等智能手机的浏览器,支持驾车导航.步行导航以及公交导航, ...

  6. 网页游戏五子棋php,HTML5网页版黑白子五子棋游戏的示例代码分享

    闲来无事做,用H5搞了几个小游戏,当然本人只是菜鸟,搞出来玩玩,大神莫喷哦, 1.HTML5网页版黑白子五子棋游戏代码,源码请下载附件! 部分前端代码: 五子棋 *{ margin:0; paddin ...

  7. php中表格间距代码,css:border-spacing属性(表格边框间距)的示例代码分享

    我们知道表格加入边框默认情况下是如下图那样的: 我们在上一节讲解了如何合并表格边框(消除表格边框间距).但是在实际开发中,我们有可能要设置一下表格边框的间距. 在CSS中,我们使用border-spa ...

  8. html导航去下划线,纯CSS实现导航栏下划线跟随的示例代码

    本篇文章主要介绍了纯CSS实现导航栏下划线跟随的示例代码,分享给大家,具体如下: 效果: 代码: html: aaaa bbbbbbb cccc dddd eeee css: ul { padding ...

  9. 采用CSS+JS实现简洁的滑动导航栏_网页代码站(www.webdm.cn)

    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

最新文章

  1. STM32固件库的调用
  2. android adb启动不了
  3. mac下androidStudio 运行模拟器出现:
  4. opencv对应python版本_【求问各位大佬python3.6怎么使用opencv,用哪个版本】python3 opencv...
  5. 基于Html5的移动端开发框架的研究
  6. c++ 8.整数加法实现
  7. JavaBean 持久化
  8. html文字列表,文字列表模板
  9. linux 在线帮助,linux获取在线帮助
  10. Scroll Depth – 衡量页面滚动的 Google 分析插件
  11. Uni2D Unity4.3 2D Skeletal Animation
  12. 《矩阵分析》代码Ⅱ——gauss消元法,列主元素法,总体主元素法matlab实现
  13. 【指纹识别】基于matlab GUI指纹识别【含Matlab源码 029期】
  14. VS2017官方下载链接
  15. 追溯微软亚洲研究院发展历史:在中国商业公司如何做研究院
  16. HTML CSS整理
  17. windows如何截图
  18. win10 新版文件资源管理器
  19. 数据结构-顺序表(动态分配存储空间)
  20. jni使用(四)-----IDEA中javah生成.h文件

热门文章

  1. 图标制作、icon制作、(简易、高效的图标制作软件)
  2. 干货:分享几款代码转流程图软件
  3. tiny4412 lcd驱动问题记录
  4. 2022山东省安全员C证考试模拟100题及答案
  5. 高思教育再被处罚:因价格违法行为遭顶格罚款,须佶成正筹备上市
  6. 亚马逊运营之精铺模式的优缺点知多少?
  7. 饥荒联机云服务器_饥荒联机独立服务器搭建教程(三):配置篇
  8. 有道接口php,php有道翻译api调用方法实例,php有道api实例
  9. Android进阶免费直播课,高中免费直播课程平台有哪些
  10. 用结构体编写电话通讯录