window.function(){/*获取左侧栏*/var ct_cLeft=document.querySelector(".ct_cLeft");/*获取左侧栏的高度*/var leftHeight=ct_cLeft.offsetHeight;/*获取用来滑动的列表*/var ulBox=ct_cLeft.querySelector("ul:first-of-type");var ulBoxHeight=ulBox.offsetHeight;/*获取所有li元素*/var lis=ulBox.querySelectorAll("li");/*设置静止状态下的最大top值*/var maxTop=0;/*设置静止状态下的最小的top值*/var minTop=leftHeight-ulBoxHeight;/*设置滑动状态下的最大的top值*/var maxBounceTop=maxTop+100;/*设置滑动状态下的最小top值*/var minBounceTop=minTop-100;console.log(maxBounceTop+":"+minBounceTop);/*实现滑动*/var startY=0;var moveY=0;var distanceY=0;/*记录当前元素滑动到的距离*/var currentY=0;/*添加滑动事件*/ulBox.addEventListener("touchstart",function(e){/*获取手指的起始坐标*/startY= e.targetTouches[0].clientY;});ulBox.addEventListener("touchmove",function(e){moveY= e.targetTouches[0].clientY;/*计算距离的差异*/distanceY=moveY-startY;/*判断滑动的时候是否超出当前指定的滑动区间*/if(currentY+distanceY > maxBounceTop || currentY+distanceY < minBounceTop){console.log("超出范围啦");return;}/*先将之前可能添加的过渡效果清除*/ulBox.style.transition="none";/*实现偏移操作:应该在之前的滑动距离的基础之上再进行滑动*/ulBox.style.top=(currentY+distanceY)+"px";});ulBox.addEventListener("touchend",function(e){/*判断当前滑动的距离是否在静止状态和滑动状态下的最小top值之间*/if(currentY+distanceY < minTop){currentY=minTop;/*回到minTop位置*/ulBox.style.transition="top 0.5s";ulBox.style.top=minTop+"px";}else if(currentY+distanceY > maxTop){currentY=maxTop;/*回到maxTop位置*/ulBox.style.transition="top 0.5s";ulBox.style.top=maxTop+"px";}else{/*记录当前滑动的距离*/currentY+=distanceY;}});/*为每一个li元素设置添加一个索引值*/for(var i=0;i<lis.length;i++){/*lis[i].setAttribute("index",i);*/lis[i].index=i;}/*绑定移动端的tap事件*//*itcast.tap(ulBox,function(e){/!*1.修改li元素的样式:将所有li元素的active样式清除,再为当前被点击的li元素添加active样式*!/for(var i=0;i<lis.length;i++){lis[i].classList.remove("active");}/!*为当前被单击的li元素添加样式*!/var li=e.target.parentNode;var liHeight=li.offsetHeight;li.classList.add("active");/!*2.移动当前的li元素到父容器的最顶部,但是不能超出之前设定了静止状态下的最小top值*!//!*获取当前li元素的索引值*!/var index=li.index;/!*开启过渡*!/ulBox.style.transition="top .5s";/!*设置偏移*!/if(-index*liHeight < minTop){/!*只能偏移到minTop位置*!/ulBox.style.top=minTop+"px";currentY=minTop;}else{ulBox.style.top=-index*liHeight+"px";currentY=-index*liHeight;}});*//*$(ulBox).on("tap",function(e){/!*1.修改li元素的样式:将所有li元素的active样式清除,再为当前被点击的li元素添加active样式*!/for(var i=0;i<lis.length;i++){lis[i].classList.remove("active");}/!*为当前被单击的li元素添加样式*!/var li=e.target.parentNode;var liHeight=li.offsetHeight;li.classList.add("active");/!*2.移动当前的li元素到父容器的最顶部,但是不能超出之前设定了静止状态下的最小top值*!//!*获取当前li元素的索引值*!/var index=li.index;/!*开启过渡*!/ulBox.style.transition="top .5s";/!*设置偏移*!/if(-index*liHeight < minTop){/!*只能偏移到minTop位置*!/ulBox.style.top=minTop+"px";currentY=minTop;}else{ulBox.style.top=-index*liHeight+"px";currentY=-index*liHeight;}});*//*绑定fastclick*/if ('addEventListener' in document) {document.addEventListener('DOMContentLoaded', function() {/*参数可以是任意的dom元素,如果写document.body,说明会将document.body下面的所的元素都绑定fastclick*/FastClick.attach(document.body);}, false);}/*fastclick使用的时候就是来绑定添加click事件*/ulBox.addEventListener("click",function(e){/*1.修改li元素的样式:将所有li元素的active样式清除,再为当前被点击的li元素添加active样式*/for(var i=0;i<lis.length;i++){lis[i].classList.remove("active");}/*为当前被单击的li元素添加样式*/var li=e.target.parentNode;var liHeight=li.offsetHeight;li.classList.add("active");/*2.移动当前的li元素到父容器的最顶部,但是不能超出之前设定了静止状态下的最小top值*//*获取当前li元素的索引值*/var index=li.index;/*开启过渡*/ulBox.style.transition="top .5s";/*设置偏移*/if(-index*liHeight < minTop){/*只能偏移到minTop位置*/ulBox.style.top=minTop+"px";currentY=minTop;}else{ulBox.style.top=-index*liHeight+"px";currentY=-index*liHeight;}})
}

京东移动端分类页面侧导航栏实现相关推荐

  1. 小米商城侧导航栏的实现(导航栏的制作)

    侧导航栏在我们写的时候很常用,很多网站上面都有侧边导航栏的应用,那么如何制作侧边导航栏呢? 下面看一看我制作的小米商城的侧导航栏. 看下列代码: <body><div class=& ...

  2. 页面顶部导航栏随着滚轮转动,页面下滑,导航栏背景颜色,透明度,字体,样式等改变

    一.大盒子app里有一个heades的导航栏,通过:style="headStyle"来改变它的颜色等样式,需要改变的,不要在style样式里定义,否则代码会执行style里定义的 ...

  3. html+css实现页面顶部导航栏

    最终效果如下: 接下来,我将从html和css两大部分,逐步为您讲解制作过程 目录 Html 实现布局 创建父栏目 创建子栏目 插入外部样式表,为接下来的css编辑做准备 Css 实现样式 排布文本, ...

  4. 页面顶部导航栏css样式布局

    项目场景: css样式布局 例如:项目场景:页面顶部导航栏,左侧logo.右侧退出登录固定在页面,不随滚动条滚动:中间有菜单,添加滚动条. 问题描述 顶部导航栏出现滚动条,滚动条位置在页面底部 解决方 ...

  5. Axure中如何快速设计左边导航栏,侧导航栏和顶部导航栏等?

    Axure中如何快速设计侧导航栏和顶部导航栏? 1.下载侧导航栏和顶部导航栏组件 参考<蚂蚁金服 ant design 中下载axure 菜单组件库> 2.导入组件 下载保存为AntDes ...

  6. 微信小程序制作页面内导航栏

    描述 项目要写一个页面内的导航栏,功能包括点击更改导航栏的样式,切换数据源. 成果 介绍 首先对导航栏设置flex布局,让三个导航标签评分屏幕,之后设置点击事件,样式改变和数据切换 代码 wxml & ...

  7. java写左侧导航栏界面,jQuery----左侧导航栏面板切换实现

    页面运行结果: 点击曹操 点击刘备 点击孙权 原图 需求说明:原图如上所示,点击一方诸侯的时候,显示该诸侯手下猛将,其他诸侯手下猛将隐藏 页面结构: 实现思路: ①给大的li注册鼠标点击事件 当鼠标点 ...

  8. uniapp隐藏页面顶部导航栏和手机系统顶部导航栏

    1.隐藏页面导航栏: pages.json文件  在"style":{ "app-plus":{ "titleNview": false } ...

  9. 小程序分类页实现三级分类,顶部导航栏,左侧分类栏,右侧数据列表

    如果大家一直读石头哥的文章,或者看石头哥的视频,肯定知道,石头哥的点餐小程序有实现二级菜品或者商品分类. 如下图 但是有时候我们想实现三级分类,该怎么做呢,今天就来教大家如何实现三级分类.随便教下大家 ...

  10. 在同一个页面切换导航栏保持正确选中状态(单页面)

    方法一:触发点击事件  选中状态class是active, $(function(){     $(".clearfix li").click(function() {       ...

最新文章

  1. C语言与OpenCL的编程示例比较
  2. android中webview loadUrl(String url,Map header)方法和postUrl(String url,byte[] postData)方法同时使用问题;...
  3. Java Streams,第 2 部分: 使用流执行聚合
  4. 信号量、互斥体和自旋锁
  5. transient-java 关键字
  6. Android ListView性能优化实例讲解
  7. 家族关系查询系统程序设计算法思路_七大查找算法(附C语言代码实现)
  8. linux主题管理器,XFCE 主题管理器:一款单一的GUI主题管理器,更改任何XFCE主题(带预览)...
  9. 如何在Mac电脑上自定义Spotlight的搜索结果?
  10. AngularJS的学习--ng-show/ng-hide/ng-if和ng-switch
  11. 19. 网购秒杀系统架构分析
  12. Python反射和内置方法(双下方法)
  13. web自动化知识点-01
  14. 非华为电脑安装华为电脑管家教程(支持一碰传,多屏协同等)
  15. AcWing 兔子与兔子
  16. wsus服务器搭建自动更新
  17. 在Unity Shader中实现漫反射光照模型(逐顶点漫反射光照、逐像素漫反射光照、半兰伯特光照)
  18. 计算机第十三套试题,2012年计算机二级VB第十三套上机试题及解析
  19. Python财务分析
  20. 行业分析| 新的学习方式——在线自习室

热门文章

  1. java把date转化成yyyymmdd_jquery 将当前时间转换成yyyymmdd格式的实现方法
  2. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1
  3. C# 提取PDF中的表格
  4. H3CNE实验:Comware基本命令操作
  5. Django项目部署到腾讯云服务器
  6. Scratch二次开发——如何创建单独的Scratch作品展示页?
  7. Axure RP8从入门到精通手册
  8. u2000网管服务器系统安装,U2000网管预安装后无法登陆
  9. 天线远场定义_暗室静区及天线近场和远场的介绍
  10. Linux文件系统:ext2/ext3