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 相关文章推荐
js封装的textarea操作方法集合(兼容很好)
Nov 16 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
Apr 27 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
Sep 04 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
js中split和replace的用法实例
Feb 28 Javascript
实例讲解JS中setTimeout()的用法
Jan 28 Javascript
JavaScript判断DIV内容是否为空的方法
Jan 29 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
Sep 01 Javascript
Javascript的动态增加类的实现方法
Oct 20 Javascript
JS正则表达式验证密码格式的集中情况总结
Feb 23 Javascript
jquery应用实例分享_实现手风琴特效
Feb 01 jQuery
JavaScript对象的特性与实践应用深入详解
Dec 30 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
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
Python实现爬取并分析电商评论
2020/06/19 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
Ejb技术面试题
2015/04/29 面试题
公司部门司机岗位职责
2014/01/03 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
超市员工管理制度
2015/08/06 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
基于Python实现西西成语接龙小助手
2022/08/05 Golang