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 相关文章推荐
jQuery中:contains选择器用法实例
Dec 30 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
Dec 29 Javascript
jQuery Plupload上传插件的使用
Apr 19 jQuery
angular4自定义组件详解
Sep 28 Javascript
JS实现元素上下左右移动效果
Oct 18 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 Javascript
如何实现js拖拽效果及原理解析
May 08 Javascript
JavaScript实现简单日历效果
Sep 11 Javascript
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
详解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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
PHP 时间日期操作实战
2011/08/26 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
使用python绘制常用的图表
2016/08/27 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
Python微信操控itchat的方法
2019/05/31 Python
Python异常处理例题整理
2019/07/07 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
python 如何实现遗传算法
2020/09/22 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
新年抽奖获奖感言
2014/03/02 职场文书
创先争优个人总结
2015/03/04 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB