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 相关文章推荐
qTip 基于JQuery的Tooltip插件[兼容性好]
Sep 01 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
Aug 07 Javascript
浅析Node.js中的内存泄漏问题
Jun 23 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
Oct 16 Javascript
JS实现的验证身份证及获取地区功能示例
Jan 16 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
Jun 09 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
Oct 09 Javascript
世界上最短的数字判断js代码
Sep 09 Javascript
layui多图上传实现删除功能的例子
Sep 23 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 Javascript
javascript Number 与 Math对象的介绍
Nov 17 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
PHP 开源框架22个简单简介
2009/08/24 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
浅析return false的正确使用
2013/11/04 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
用python写爬虫简单吗
2020/07/28 Python
Python爬取某平台短视频的方法
2021/02/08 Python
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
清明节扫墓活动方案
2014/03/02 职场文书
财务管理专业自荐书
2014/09/02 职场文书
亲属关系公证书样本
2015/01/23 职场文书
家装业务员岗位职责
2015/04/03 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
高一作文之暖冬
2019/11/09 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
简单介绍Python的第三方库yaml
2021/06/18 Python