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获取scrollHeight问题想到的标准问题
May 27 Javascript
JQuery获取浏览器窗口内容部分高度的代码
Feb 24 Javascript
JavaScript设计模式之单件模式介绍
Dec 28 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
原生JS 购物车及购物页面的cookie使用方法
Aug 21 Javascript
this在vue和小程序中的使用详解
Jan 28 Javascript
vue实现微信获取用户信息的方法
Mar 21 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
Apr 10 Javascript
在Koa.js中实现文件上传的接口功能
Oct 08 Javascript
Vuex中实现数据状态查询与更改
Nov 08 Javascript
angular *Ngif else用法详解
Dec 15 Javascript
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
在字符串中把网址改成超级链接
2006/10/09 PHP
php获取系统变量方法小结
2015/05/29 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
init进程的作用
2015/08/20 面试题
大学本科生的个人自我评价
2013/12/09 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
设备管理实施方案
2014/05/31 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
争先创优活动总结
2014/08/27 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python
对讲机知识
2022/04/07 无线电