js实现手机web图片左右滑动效果


Posted in Javascript onDecember 29, 2017

最近在做一个手机端web站点,里面有一个图片展示效果:

1、点击任意图片时图片全屏展示,左右滑动能展示其他的图片。
2、滑动超过一定范围自动滑到下一张图片,不超过则回退到当前照片位置。此处的滑动要带动画效果

实现:

每张图片外面一个div,将其宽度设置为100%,最外层有一个div[命名为outerDiv],其宽度设为:总图片数量*100+‘%'。给最外层div设置touchstart,touchmove,touchend事件监听处理函数,在touchmove中根据移动的x轴距离动态改变outerDiv的x轴距离即可实现图片滑动效果,在touchend中根据当前滑动的距离判断滑动到下一张还是回退当前图片位置。

之前我们可以通过设置outerDiv的position属性,然后改变left值实现移动效果,这里我用的是css3的动画函数transform,简单,且可以实现动画效果

transform参数:

-webkit-transform:translate(100px,200px) tr //可以设置x、y轴方向移动距离
-webkit-transform:translateX(100px) translateY(200px) translateZ(3000px) 

//可以设置x、y、z轴方向移动距离.3D效果
-webkit-transition:.4s ease;//设置动画时间

定义动画时间:

.transition {
  -webkit-transition:.4s ease;
  -moz-transition:.4s ease;
  -ms-transition:.4s ease;
  -o-transition: .4s ease;
  transition:.4s ease;
}

关键代码:

var touchOption={touchStartX:0,startTranslateX:0,moveDistance:0};

1、touchstart

outerDiv.addEventListener('touchstart',function(){
$(this).removeClass('transition');//移除动画效果,否则移动时图片会颤动
touchOption.touchStartX = e.touches[0].clientX;
        if ($(this).css("-webkit-transform") == 'none') {
          touchOption.startTranslateX = 0;
        }
        else {
          //css-webkit-transform属性值格式:matrix(1, 0, 0, 1, -4140, 0)
          var transfrom_info = $('.sourcePhotoDiv').css("-webkit-transform").split(',')[4];//获取当前outerDiv的x轴坐标
          touchOption.startTranslateX = parseInt(transfrom_info);
        }
},false);

2、touchmove

outerDiv.addEventListener('touchmove',function(){
       touchOption.moveDistance = (e.touches[0].clientX - touchOption.touchStartX);
        var TranslateX = touchOption.startTranslateX + touchOption.moveDistance;
        $(this).css('-webkit-transform', 'translateX('+ TranslateX +'px) translateZ(0)'); //移动图片
},false);

3、touchend

outerDiv.addEventListener('touchend',function(){
      $(this).addClass('transition);//添加动画效果
       var moveX=100;//此处计算移动移动下一张图片还是退货当前图片代码省略       
        $(this).css('-webkit-transform', 'translateX('+ moveX +'px) translateZ(0)'); //移动图片
},false);

总结:

1、outerDiv的动画参数和效果都是js动态添加的,不需要事先定义
2、用translate(x,y)这种参数时,图片移动时会颤动
3、用translateX() 且带translateZ(0)时图片移动正常,不带translateZ(0)同样出现颤动
4、如果用的是translateX(moveX) ranslateZ(0)这种格式,如果moveX用的是百分比值,如‘50%',在android手机自动浏览器和uc浏览器中则没有动画效果,用px单位值则正常

为防止图片移动过程颤动和保证动画效果,建议大家用translateX(100px) ranslateZ(0)这种参数,且移动距离用px值

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

Javascript 相关文章推荐
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
node.js中的socket.io入门实例
Apr 26 Javascript
初识Node.js
Mar 20 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
Jan 10 Javascript
AngularJS 2.0入门权威指南
Oct 08 Javascript
Node.js下自定义错误类型详解
Oct 17 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
在vue项目中使用sass的配置方法
Mar 20 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
JavaScript函数定义方法实例详解
Mar 05 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
Nov 25 Javascript
快速解决element的autofocus失效问题
Sep 08 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
Dec 29 #Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 #Javascript
javaScript 连接打印机,打印小票的实例
Dec 29 #Javascript
深入浅析vue组件间事件传递
Dec 29 #Javascript
详解Vue 事件修饰符capture 的使用
Dec 29 #Javascript
react-router browserHistory刷新页面404问题解决方法
Dec 29 #Javascript
node简单实现一个更改头像功能的示例
Dec 29 #Javascript
You might like
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
google广告之另类js调用实现代码
2020/08/22 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
PageFactory设计模式基于python实现
2020/04/14 Python
利用python汇总统计多张Excel
2020/09/22 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
C#公司笔试题
2014/03/28 面试题
某科技软件测试面试题
2013/05/19 面试题
2014年党员个人剖析材料
2014/10/08 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
单位接收函格式
2015/01/30 职场文书
坎儿井导游词
2015/02/09 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
python单向链表实例详解
2022/05/25 Python
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS