PC端上实现图片轮播效果非常简单,只要通过使用click事件就可以非常简单的实现效果,但是在移动端上,就要通过核心的touch事件来实现。话不多说,现在我们就开始移动端轮播效果的实现。

首先就是原生JS实现效果的原理,其原理和PC端的原理一样,主要是控制包容图片的盒子的left的大小实现向左滑动还是向右滑动。以一张图来概括,如下:

1.png

在做效果之前,向将其静态效果实现,再用JS实现其动态效果。

  • ![](images/1.jpg)
  • ![](images/2.jpg)
  • ![](images/3.jpg)
  • ![](images/4.jpg)
  • ![](images/5.jpg)

html{height:100%;}

body{width: 100%;height:100%;margin:0;overflow: hidden;}

.wrap{position: relative;overflow: hidden;}

.box{position: absolute;list-style: none;left:0;top:0;padding:0;margin:0;}

.box li{float:left;}

.box li img{display:block;width:100%;height:100%;}```

var aLi = document.querySelectorAll(".box li");

var box = document.querySelector('.box');

var wrap = document.querySelector('.wrap');

var aLiWidth = box.offsetWidth;

wrap.style.height = aLi[0].offsetHeight + 'px';

// 设置盒子的宽度

box.style.width = aLi.length100 + '%';

for(var i=0;i

aLi[i].style.width = 1/aLi.length * 100 + '%';

};

// 初始化手指坐标点

var startPoint = 0;

var startEle = 0;

//手指按下

wrap.addEventListener("touchstart",function(e){

startPoint = e.changedTouches[0].pageX;

startEle = box.offsetLeft;

});

//手指滑动

wrap.addEventListener("touchmove",function(e){

var currPoint = e.changedTouches[0].pageX;

var disX = currPoint - startPoint;

var left = startEle + disX;

box.style.left = left + 'px';

});

//当手指抬起的时候,判断图片滚动离左右的距离,当

wrap.addEventListener("touchend",function(e){

var left = box.offsetLeft;

// 判断正在滚动的图片距离左右图片的远近,以及是否为最后一张或者第一张

var currNum = Math.round(-left/aLiWidth);

currNum = currNum>=(aLi.length-1) ? aLi.length-1 : currNum;

currNum = currNum<=0 ? 0 : currNum;

box.style.left = -currNumwrap.offsetWidth + 'px';

})

代码码到这里的时候,效果除了定时器和下方锚点并没有实现,其余就基本上OK了。但是在实际上手的时候,发现在老旧机型上会存在性能不足产生卡断的问题,后来在查阅资料时才发现,left/margin/top值改变时会影响元素在文档中的布局,当对布局进行动画时,该元素的改变会引起其他元素在文档中的位置,进而使浏览器对相关的元素进行重绘,造成极大的性能开销。所以在移动端轮播中放弃了使用left的方法,而选用了transform。至于transform如何实现,我将在下篇博文中解析。

移动端实现文字轮播_使用原生JS实现移动端图片轮播效果(一)相关推荐

  1. html轮播图jquery,原生js和jquery实现图片轮播特效

    (1)首先是页面的结构部分 对于我这种左右切换式 1.首先是个外围部分(其实也就是最外边的整体wrapper) 2.接着就是你设置图片轮播的地方(也就是一个banner吧) 3.然后是一个图片组(可以 ...

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

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

  3. html鼠标滚动图片渐渐淡出,原生js和jquery实现图片轮播淡入淡出效果

    图片轮播有很多种方式,这里采用其中的 淡入淡出形式 js原生和jQuery都可以实现,jquery因为封装了很多用法,所以用起来就简单许多,转换成js使用,其实也就是用js原生模拟出这些用法. 但不管 ...

  4. java实现选项卡定时轮播_原生js面向对象编程-选项卡(自动轮播)

    原生js面向对象编程-选项卡(自动轮播) }#div1 input{color:#fff;width:100px;height:40px;background:darkseagreen;border: ...

  5. html图片自动切换的幻灯片效果的,js带点自动图片轮播幻灯片特效代码分享

    本文实例讲述了javascript带点自动图片轮播幻灯片特效.分享给大家供大家参考.具体如下: 这是一款基于javascript实现带点自动图片轮播幻灯片特效代码,实现过程很简单. 运行效果图:--- ...

  6. html js轮播图无白链接,JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)...

    简介这篇文章主要介绍了JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)以及相关的经验技巧,文章约11114字,浏览量505,点赞数3,值得参考! *{ margin:0; pa ...

  7. html轮播带缩略图,js带缩略图的图片轮播效果代码分享

    本文实例讲述了js带缩略图的图片轮播效果.分享给大家供大家参考.具体如下: 这是一款基于javaScript实现带缩略图的图片轮播特效代码,实现过程很简单. 运行效果图:--------------- ...

  8. 原生JS实现移动端模块的左右滑动切换效果,基于vue、stylus

    原生JS实现移动端模块的左右滑动动画效果,基于vue.stylus 大概实现方案: 手指touch屏幕的整个过程,会派发touchstart.touchmove.touchend三个事件,对这三个事件 ...

  9. html移动端选择器插件,原生js实现移动端选择器插件

    原生js实现移动端选择器插件 前言 插件功能只满足我司业务需求,如果希望有更多功能的,可在下方留言,我尽量扩展!如果你有需要或者喜欢的话,可以给我github来个star ? 预览 准备 首先在页面中 ...

最新文章

  1. golang channel本质——共享内存
  2. Javascript面向对象编程(一):封装
  3. oracle创建表空间 扩展表空间文件 修改表空间自动增长
  4. 局域网内抢网速_路由器要不要每天重启?多亏宽带师傅透露,难怪网速一天比一天慢...
  5. hystrix应用 博客_用Hystrix保护您的应用程序
  6. java的传值调用什么_Java的传值调用
  7. ycms+php,CMS下载_建站大师 - 建站模板,CMS模板,网站开发
  8. element-ui 设置table width %百分比
  9. 计算机二级学那个科目,考计算机二级选哪个科目好 哪个科目简单
  10. 电子科技大学要多少分才能录取?
  11. node mysql和koa_node+koa2+mysql搭建博客后台
  12. 刷新页面后怎样让hover样式停留不消失
  13. 多线程之CyclicBarrier工具类和Exchanger工具类
  14. 人工智能AI系列 - 视频图像搜索
  15. c 易语言置入代码6,易语言置入代码 , 谁碰到这种情况_精易论坛
  16. macbook proa1708_Macbook pro2017 a1708转接卡更换大容量硬盘
  17. 80+的AI音频工具你值得拥有
  18. 计算机相关专业毕业生参加IT培训是否有必要?
  19. 华为认证HCIP难考吗?
  20. 张一鸣:我这 7 年来的人生感悟

热门文章

  1. org.springframework.data.mapping.PropertyReferenceException: No property xxxx found for type Xxxx
  2. linux命令: tree的c实现
  3. 直接拿来用!最火的iOS开源项目
  4. Linux服务器查看占用IO较高的进程
  5. 让手机站点像原生应用的四大途径
  6. 转载:asp.net生成缩略图通用函数(支持多种生成方式)
  7. 比特币现金足球:BCH驱动的多人世界杯应用
  8. Forever +nginx部署Node站点
  9. elasticsearch health yellow
  10. Android开发实践:屏幕旋转的处理