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 相关文章推荐
利用javascript/jquery对上传文件格式过滤的方法
Jul 25 Javascript
JS与C#编码解码
Dec 03 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
js+html5实现的自由落体运动效果代码
Jan 28 Javascript
完善的jquery处理机制
Feb 21 Javascript
Bootstrap栅格系统的使用详解
Oct 30 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
Jan 17 Javascript
Angular中sweetalert弹框的基本使用教程
Jul 22 Javascript
详解Nuxt.js部署及踩过的坑
Aug 07 Javascript
Vue源码解析之数组变异的实现
Dec 04 Javascript
如何提升vue.js中大型数据的性能
Jun 21 Javascript
JavaScript实现登录窗体
Jun 22 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
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
php 在文件指定行插入数据的代码
2010/05/08 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
smarty简单应用实例
2015/11/03 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
Python的一些用法分享
2012/10/07 Python
Python错误的处理方法
2020/06/23 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
python安装及变量名介绍详解
2020/12/12 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
毕业自我鉴定总结
2014/03/24 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
2014年共青团工作总结
2014/12/10 职场文书
公路施工安全责任书
2015/05/08 职场文书
小学班主任心得体会
2016/01/07 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers