一.首先是HTML代码:  记得在头部加一个移动端的视口

<header><div class="logo">聚划算</div><div class="nav"><div id="nuit"><ul><li><a href="#">购物1</a></li><li><a href="#">购物2</a></li><li><a href="#">购物3</a></li><li><a href="#">购物4</a></li><li><a href="#">购物5</a></li><li><a href="#">购物6</a></li><li><a href="#">购物7</a></li></ul></div></div><div class="btn">按钮</div>
</header>

二:接下来是CSS代码  很简单大家都能看懂  都是基本的低吗了

*{margin:0;padding: 0;
}
hearder{background: #ccc;height: 45px;width: 100%;position: relative;
}
header .logo{position: absolute;top:0;left: 0;width: 100px;height: 45px;background: pink;z-index: 999;text-align: center;line-height: 40px;font-size: 25px;
}
header .btn{position: absolute;top:0;right: 0;width:100px;height: 45px;background: pink;z-index: 999;
}
header .nav{padding: 0 60px 0 100px;width: 100%;height: 45px;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;overflow: hidden;}
#nuit{width: 100%;height: 45px;position: relative;background: #f00;
}
#nuit ul{list-style:none;height: 45px;padding-left: 10px;position: absolute;
}
#nuit ul li{float:left;width: 60px;height: 45px;text-align: center;margin-left: 10px;line-height: 40px;
}
#nuit ul li a{text-decoration: none;color:white;
}
.btn{text-align: center;line-height: 40px;
}

三.最后就是JS代码了:  这是最核心的  看不懂的每一行都有注释

var box = document.querySelector('#unit')
var ul = document.querySelector('ul')
var nav = document.querySelector('.nav')
//屏幕宽度
var windowWidth = document.documentElement.clientWidth || document.body.clientWidth;
//ul的真实宽度
var allWidth = ul.children.length * 70;
ul.style.width = allWidth +'px';
//反弹值
var min = allWidth - (windowWidth - 100 - 60);
var deltaX;
//信号量
var nowX = 100;
//移动数组,用于计算手指抬起时的瞬时速度
var moveAll = [];
ul.addEventListener('touchstart',function (event) {event.preventDefault();//去掉过度
    ul.style.transition = 'none';//记录偏差值 手指在滑块上的位置距离滑块左边的距离
    deltaX = event.touches[0].clientX - nowX;
},false);
ul.addEventListener('touchmove',function (event) {event.preventDefault();//改变信号量
    nowX = event.touches[0].clientX - deltaX;//动起来
    ul.style.left = nowX + 'px';//将每次移动触发的位置添加到moveArr数组中
    moveAll.push(event.touches[0].clientX);},false);
ul.addEventListener('touchend',function (event) {event.propertyIsEnumerable();//计算moveAll中最后两个坐标间的距离
    var end = moveAll.length - 1;var s = moveAll[end] - moveAll[end - 2];// s这个距离决定了结束时的瞬时速度,根据s计算一个新的惯性数值
    var target = nowX + s * 5;if (target < -min){target = -min;} else if (target > 0) {target = 0;}ul.style.transition = 'all 0.4s';ul.style.transition = 'all 0.4s cubic-bezier(.1,.92,.31,2.01) 0s';//过度实现最终移动
    ul.style.left = target + 'px';//改变信号量
    nowX = target;
});

最后的效果大概是这个效果 看的不太懂得 可以访问聚划算的官网看看人家原来的效果!!!

聚划算导航栏的反弹效果代码 纯原生js实现相关推荐

  1. html制作翻页效果代码,使用原生JS实现滚轮翻页效果的示例代码

    一.滚轮事件 当用户通过鼠标滚轮与页面交互.在垂直方向上滚动页面时,就会触发mousewheel事件,这个事件就是实现全屏切换效果需要用到的.在IE6, IE7, IE8, Opera 10+, Sa ...

  2. php点击切换图片的底部导航,如何优雅地使用BottomNavigationView实现底部导航栏+fragment切换效果...

    BottomNavigationView.jpeg 引言 之前总是使用RadioButton+ViewPager来实现底部导航栏+fragment切换效果,总是繁琐地还需要写ViewPager的适配器 ...

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

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

  4. 底部导航栏的凸起效果

    微信小程序开发教程.开发教学 本视频为1-1号视频,做出了底部导航栏的凸起效果 第一次做视频,希望大家多多支持- 组件源码+项目源码: 链接:https://pan.baidu.com/s/1EkZx ...

  5. Vue实现导航栏吸顶效果

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  6. 扫雷html5简单初级,纯原生JS用面向对象class方法实现简易扫雷小游戏

    Demo介绍 纯原生js 实现 且用ES6语法class写的扫雷小游戏:布局为10*10的网格,随机生成10-20个雷. 左键点击扫雷.右键标记该地方有雷.该demo下载下来复制到html文件中直接可 ...

  7. 纯原生JS用面向对象class方法实现简易扫雷小游戏

    Demo介绍 纯原生js 实现 且用ES6语法class写的扫雷小游戏:布局为10*10的网格,随机生成10-20个雷. 左键点击扫雷.右键标记该地方有雷.该demo下载下来复制到html文件中直接可 ...

  8. react 原生html 插件,纯原生JS的瀑布流插件Macy.js,前端必备插件

    这是一款非常轻量级的纯原生JS的瀑布流插件--Macy.js,如今图片和视频网站非常多,非常适应瀑布流这样的布局方式来呈现给用户. 所以,选择一款简单易用的瀑布流js插件,可以让前端工程师快速开发出漂 ...

  9. html5 原生插件,前端必备插件之纯原生JS的瀑布流插件Macy.js

    这是一款非常轻量级的纯原生JS的瀑布流插件--Macy.js,如今图片和视频网站非常多,非常适应瀑布流这样的布局方式来呈现给用户. 这款流布局JS插件仅有4KB的大小,可以说是非常轻量级的哦.配置也比 ...

最新文章

  1. h.264的NAL和VCL
  2. hihocoder #1103 : Colorful Lecture Note微软苏州校招笔试 1月10日(字符串处理+栈)
  3. 光纤布拉格光栅matlab,matlab对各种光纤光栅的仿真
  4. C# 网络编程之通过ip地址获取地理位置(补充)
  5. 计算机网络实验(华为eNSP模拟器)——第九章 配置多个虚拟局域网(vlan)
  6. restful服务端客户端_测试RESTful服务的客户端
  7. git中使用fork
  8. java in 绑定变量_ng-model绑定的变量在controller中为undefined
  9. 18kw丹佛斯变频器常见故障_变频器常见故障——输出不平衡、过载、开关电源损坏...
  10. python中的numpy模块和pandas模块的区别_python的numpy模块- 01.pandas基本数据类型
  11. 简单使用NSURLConnection、NSURLRequest和NSURL
  12. Mac菜单栏使用过程中遇到的问题及解决方法
  13. 小程序快速入门:wxml的使用
  14. JSP九大内置对象及其使用教程
  15. 5、传输介质——大对数线缆
  16. xp无法访问文件共享服务器,XP不能访问Windows7共享文件之解决办法
  17. linux下字符终端某些按键无法输入解决方法
  18. c语言函数求圆面积,C语言编写函数,计算圆面积.
  19. 数学速算法_计算总是出算?小学数学常用的25种快速口算窍门,学好算数必备...
  20. 群晖服务器创建文件夹,群晖Synology 创建共享文件夹视频图文教程

热门文章

  1. 程序员生存定律-六个程序员的故事(2) .
  2. 【成员故事】CSDN杨东杰:生态运营需要一个自己的圈子
  3. 牛客数据库SQL实战 51-60(substr切割字符串、group_concat组拼接、limit_offset分页、exists条件成立判断、case分支、表的复用)
  4. JAVA蓝桥杯分解质因数
  5. 斜度线在CAD中你是怎么画的?
  6. 【读懂Autosar代码】-6-Function函数的定义
  7. java中内边距跟外边距,padding和margin——内边距和外边距
  8. gt710显卡驱动linux,华硕 GT710-SL-2G驱动下载_asus GT710-SL-2G显卡驱动下载-硬件之家...
  9. 雷军十年的演讲:吾志所向,一往无前!
  10. 微擎php页面跳转,登录微擎后台直接跳转到人人商城后台首页