一、功能实现描述

n个div模块实现左右滑动,支持移动端触摸

二、实现原理以及思路

1.容器宽度为n*100%,隐藏溢出内容

2.监听触摸事件,判断移动方向

2.根据div的个数,计算生成一个数组,保存每个div的index,和计算出容器TranslateX()的值

3.根据计算的值,在滑动事件中给容器添加style样式,来实现某个div在可见视图中

三、代码

1.js

function Slide() {var direction=0,start=0,end=0;//负左划var currentIndex=0,model=[];var boxes = document.querySelectorAll('div.slideItem');var wrap = document.querySelector('div.slideWrap');var prev = document.querySelector('div.prev');var next = document.querySelector('div.next');var count=boxes.length;var max=count,min=-1;var moveright=function () {var prev=getPos(currentIndex-1,1);if(currentIndex>=0){wrap.style.cssText+='transform:translateX(-'+prev+'%)';currentIndex--;}currentIndex=correctCurrentIndex(currentIndex);console.log(currentIndex)};var moveleft=function () {var next=getPos(currentIndex+1,0);if(currentIndex<=3){wrap.style.cssText+='transform:translateX(-'+next+'%)';currentIndex++;}currentIndex=correctCurrentIndex(currentIndex);console.log(currentIndex)};var getPos=function(pos,isRight){var _index;if(isRight){_index=pos<0?0:pos;}else{_index=pos>count-1?count-1:pos;}return model[_index].pos;};var movestart = function (e) {start=e.changedTouches[0].screenX;};var moveend = function (e) {end=e.changedTouches[0].screenX;direction=end-start;console.log(direction)direction>0?moveright():moveleft();};//纠正下标边界var correctCurrentIndex=function (_currentIndex) {_currentIndex=_currentIndex<=min?0:_currentIndex;_currentIndex=_currentIndex>=max?max-1:_currentIndex;return _currentIndex;};wrap.style.cssText+=('width:'+count*100+'%');for(var i=0;i<boxes.length;i++){boxes[i].style.cssText+=('width:'+100/count+'%');boxes[i].addEventListener('touchstart', movestart);boxes[i].addEventListener('touchend', moveend);model.push({order:i,pos:(i*(100/count))})}this.setCurrentIndex=function (newCurrent) {direction=+(newCurrent>currentIndex);currentIndex=newCurrent;};this.getCurrentIndex=function () {return currentIndex;};prev.addEventListener('click',moveright.bind(this));next.addEventListener('click',moveleft.bind(this));
}

2.html

<div class="container"><div class="prev"><</div><div class="next">></div><div class="slideWrap"><div class="slideItem"><i>1</i></div><div class="slideItem"><i>2</i></div><div class="slideItem"><i>3</i></div></div>
</div>

Slide 插件的实现相关推荐

  1. MUI-轮播插件实现-UI组件

    一.简介: 轮播组件是mui提供的一个核心组件,在该核心组件基础上,衍生出了图片轮播.可拖动式图文表格.可拖动式选项卡.左右滑动9宫格等组件,这些组件有较多共同点,如Dom构造基本相同. <di ...

  2. pc端html轮播带滑块,原生js实现移动端+pc端 轮播插件

    slide.js 原生js写的轮播兼容 pc+移动端 插件,支持轮播速度,轮播内容,轮播间隔,手势灵敏度自定义,导航圆点点击跳转,手势滑动. 使用说明:slide.js文件包含小部分es6语法编写的文 ...

  3. 大话主席(superslide和 touchslide)插件的使用

    对于实现效果来说,插件的办事效率真的是太高了,而且里边也被处理过兼容性,用起来实在是特别方便,现在我们来说说大话主席中的slide插件,它分为pc端(superslide)和移动端(touchslid ...

  4. superslide 学习笔记

    近日了了解了一下jquery 插件superSlide,有种相见恨晚的感觉,这实在是一款常用,实用的插件: 可以做 1.标签切换 / 书签切换 / 默认效果 2.焦点图 / 幻灯片 3.图片滚动 4. ...

  5. 18款 非常实用 jquery幻灯片图片切换

    1.jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动 jquery图片特效制作仿腾讯QQ商城首页banner焦点图片轮播切换效果,带索引按钮控制和左右按钮控制图片切换. 查看演示>& ...

  6. HTML5 极简的JS函数

    页面初始化 mui框架将很多功能配置都集中在mui.init方法中,要使用某项功能,只需要在mui.init方法中完成对应参数配置即可,目前支持在mui.init方法中配置的功能包括:创建子页面.关闭 ...

  7. 如何重构一个过万Star开源项目—BetterScroll

    过去的 v1 时代 距离 BetterScroll v1 版本发布,至今已经 3 年多,由于它在移动端良好的滚动体验与性能以及多种滚动场景的支持,深受社区的青睐.用户也可以基于 BetterScrol ...

  8. mui h5+文档最详版

    mui h5+文档最详版 界面初始化 H5plus初始化 创建子页面 打开界面 参数传递 控制页面load显示 关闭界面 底部导航切换界面 自定义事件 页面预加载 消息框 原生模式ActionShee ...

  9. 最接近原生APP体验的高性能前端框架——MUI

      前  言 MUI有三大特点: 轻量 追求性能体验,是我们开始启动MUI项目的首要目标,轻量必然是重要特征: MUI不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K 原生UI ...

最新文章

  1. Jsp页面中常用的EL表达式
  2. 计算机小组作品,计算机兴趣小组小作品汇总.doc
  3. 从人生(论文)的数量追求人生的质量
  4. node中的js-核心模块
  5. java序列化_技术干货 | JAVA反序列化漏洞
  6. 学习笔记(47):Python实战编程-pack布局
  7. 关于.NET下开源及商业图像处理(PSD)组件
  8. vm虚拟机联网最简单的方式
  9. vRealize-Operations-Manager-Appliance-8.2.0 VROPS 8.2安装部署
  10. 为什么说要注销 QQ 的,都是君子呢?
  11. linux能解锁小米手机吗,【BL锁】还在为小米手机如何解锁及解锁后如何加锁而烦恼吗?...
  12. 野火STM32F429学习笔记
  13. 关于《成电讲坛》活动领票环节的调查报告
  14. PHP设置谷歌验证器(Google Authenticator)实现操作二步验证
  15. 蚂蚁区块链平台BaaS技术解析与实践
  16. 余额宝暴富记:为“草根”量身定做
  17. 计算机sci一区影响因子,SCI一区期刊及影响因子.pdf
  18. Nginx 入门学习
  19. 网络管理实战 (1)理论篇
  20. python pycharm安装pexpect

热门文章

  1. python开发搜索引擎_简明Python开发教程(5):用爬虫实现个性化搜索引擎
  2. 千亿级数字新蓝海 DCF集团实现金融行业再升级
  3. Floyd 算法介绍
  4. 在Word中输入乘号和除号的几种方法(转)
  5. 【金融统计】R语言风险回报权衡。风险回报权衡即Risk-Return Trade-Off。这里我们用过去的股票和债券数据的表现进行比较。
  6. Ubuntu服务器连接无线网,Ubuntu 16 Server 设置WIFI连接
  7. springboot 集成hibernate 集成struts2
  8. angular7中文件下载功能(图片、文档)
  9. C语言象棋马的遍历程序,马在中国象棋的遍历问题(c语言)
  10. Arduino + TLC5615