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 相关文章推荐
nicejforms——美化表单不用愁
Feb 20 Javascript
JQuery中对Select的option项的添加、删除、取值
Aug 25 Javascript
JS动态加载当前时间的方法
Feb 09 Javascript
javascript实现仿百度图片的瀑布流加载效果
Apr 20 Javascript
Bootstrap表格和栅格分页实例详解
May 20 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
Feb 15 Javascript
微信小程序后台解密用户数据实例详解
Jun 28 Javascript
EasyUI在Panel上动态添加LinkButton按钮
Aug 11 Javascript
Angular实现下拉框模糊查询功能示例
Jan 03 Javascript
Vue页面骨架屏注入方法
May 13 Javascript
微信小程序实现图片选择并预览功能
Jul 25 Javascript
js 解析 JSON 数据简单示例
Apr 21 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
一个MYSQL操作类
2006/11/16 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
python删除文件示例分享
2014/01/28 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python针对excel的操作技巧
2018/03/13 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
简述python&pytorch 随机种子的实现
2020/10/07 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
超市实习总结自我鉴定
2013/09/19 职场文书
环境工程大学生个人的自我评价
2013/10/08 职场文书
公司周年庆典邀请函
2014/01/12 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
《巨人的花园》教学反思
2014/02/12 职场文书
师德建设实施方案
2014/03/21 职场文书
医疗纠纷协议书
2014/04/16 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
铣工实训报告
2014/11/05 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
《颐和园》教学反思
2016/02/19 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang