javascript实现滚轮轮播图片


Posted in Javascript onDecember 13, 2020

本文实例为大家分享了javascript实现滚轮轮播图片的具体代码,供大家参考,具体内容如下

效果图如下,只能用滚轮移动到头部和尾部

javascript实现滚轮轮播图片

思路:

根据需要展示的图片数量(view-count)与slide-container中存放的图片数量设置ul的长度,然后设置每个li的均等宽度。

每次滚轮滚动ul移动一个li的距离

HTML:

<div class="slide-container" view-count="4">
 <ul>
 <li>
  <img src="images/women/15444293310974910.jpg" alt=""/>
 </li>
 <li>
  <img src="images/women/15444293312083674.jpg" alt=""/>
 </li>
 <li>
  <img src="images/women/15444293313734437.jpg" alt=""/>
 </li>
 <li>
  <img src="images/women/15444293315979953.jpg" alt=""/>
 </li>
 <li>
  <img src="images/women/15444293316955485.jpg" alt=""/>
 </li>
 <li>
  <img src="images/women/15444293317767707.jpg" alt=""/>
 </li>
 </ul>
</div>

CSS:

.slide-container {
  max-width: 1230px;
  margin: auto;
  overflow: hidden;
 }
 
 .slide-container ul {
  transition: all 0.5s linear;
 }
 
 .slide-container li {
  float: left;
 }
 
 .slide-container img {
  width: 100%;
 }

JS:

(function () {
 
 let slider = $('.slide-container'),
  li = slider.find('li'),
  length = li.length,
  curImgIndex = 0; //当前图片索引
 
 //设置ul宽度和li的宽度
 function initSlider() {
  slider.find('ul').css({
  'width': length / slider.attr('view-count') * 100 + '%'
  });
  li.css({
  'width': 'calc(' + 100 / length + '% - 10px)',
  'margin': '0 5px'
  });
 }
 
 //统一处理滚轮滚动事件
 function wheel(event) {
  var delta = 0;
  if (!event) event = window.event;
  if (event.wheelDelta) { //IE、chrome浏览器使用的是wheelDelta,并且值为“正负120”
  delta = event.wheelDelta / 120;
  if (window.opera)
 
  //因为IE、chrome等向下滚动是负值,FF是正值,为了处理一致性,在此取反处理
   delta = -delta;
  } else if (event.detail) { //FF浏览器使用的是detail,其值为“正负3”
  delta = -event.detail / 3;
  }
  if (delta) {
  handle(delta);
 
  //阻止事件冒泡重复执行和屏幕向下滚动
  event.preventDefault() && event.stopPropagation();
  }
 
 }
 
 //上下滚动时的具体处理函数
 function handle(delta) {
 
  //滚轮向上滚动
  if (delta < 0) {
  curImgIndex++;
  } else if (delta > 0) { //向下滚动
  curImgIndex--;
  }
  move();
 }
 
 function move() {
 
  //到达两端则不移动
  if (curImgIndex > li.length - slider.attr('view-count') || curImgIndex < 0){
  if(curImgIndex > 0 ){
   curImgIndex--;
  }else{
   curImgIndex++;
  }
  return false;
  }
  slider.find('ul').css({
  'transform': 'translateX( -' + 100 / length * curImgIndex + '% )'
  })
 }
 
 initSlider();
 
 //绑定滚轮事件兼容性写法
 if (window.addEventListener)
  slider.get(0).addEventListener('DOMMouseScroll', wheel, false);
 slider.get(0).onmousewheel = wheel;
}());

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 在定义的时候立即执行的函数表达式(function)写法
Jan 16 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
javascript读取Xml文件做一个二级联动菜单示例
Mar 17 Javascript
js绘制圆形和矩形的方法
Aug 05 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
Node.js调试技术总结分享
Mar 12 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
详解Angular4 路由设置相关
Aug 26 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
May 10 Javascript
vue编写简单的购物车功能
Jan 08 Vue.js
swiper实现导航滚动效果
Dec 13 #Javascript
swiperjs实现导航与tab页的联动
Dec 13 #Javascript
Vue实现简单购物车功能
Dec 13 #Vue.js
javascript前端实现多视频上传
Dec 13 #Javascript
vue使用element-ui实现表单验证
Dec 13 #Vue.js
vue+element实现动态加载表单
Dec 13 #Vue.js
js实现滚动条自动滚动
Dec 13 #Javascript
You might like
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
关闭时刷新父窗口两种方法
2014/05/07 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
纯js实现动态时间显示
2020/09/07 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
一个简单的python程序实例(通讯录)
2013/11/29 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Python安装OpenCV的示例代码
2020/03/05 Python
露营世界:Camping World
2017/02/02 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
盛大二次面试题
2016/11/18 面试题
网络信息管理员岗位职责
2014/01/05 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
乔迁之喜主持词
2014/03/27 职场文书
高三学生评语大全
2014/04/25 职场文书
新手上路标语
2014/06/20 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
学生检讨书如何写
2014/10/30 职场文书
教师个人学习总结
2015/02/11 职场文书
经费申请报告
2015/05/15 职场文书
高二化学教学反思
2016/02/22 职场文书