虽然 以前也写过手机端页面 。当时用的jquery moblie 框架。啥也不懂 就知道复制粘贴出效果 不敢改内部样式。现在呢  了解手机端原理 一些基本的概念 视口 缩放 后 。再去想以前写的页面 套框架 显然得心应手了不少。

手机移动端轮播 原生js

代码:

  1. let banner = document.querySelector('.jd_banner')
  2. let imgbox = banner.querySelector('ul:first-of-type')//第一个ul
  3. let first = imgbox.querySelector('li:first-of-type')
  4. let last = imgbox.querySelector('li:last-of-type')
  5. //插入
  6. // 最后的位置 //复制一个
  7. imgbox.appendChild(first.cloneNode(true))
  8. //开始的位置
  9. imgbox.insertBefore(last.cloneNode(true), imgbox.firstChild)
  10. let lilist = imgbox.children
  11. let bannerWidth = banner.offsetWidth;
  12. imgbox.style.width = lilist.length * bannerWidth + 'px'
  13. for (let i = 0; i < lilist.length; i++) {
  14. lilist[i].style.width = imgbox.offsetWidth / lilist.length + 'px'
  15. }
  16. imgbox.style.left = -bannerWidth + 'px'
  17.  
  18. let index = 1;
  19. //屏幕大小改变
  20. window.onresize = function () {
  21. bannerWidth = banner.offsetWidth;
  22. imgbox.style.width = lilist.length * bannerWidth + 'px'
  23. for (let i = 0; i < lilist.length; i++) {
  24. lilist[i].style.width = imgbox.offsetWidth / lilist.length + 'px'
  25. }
  26. imgbox.style.left = (-index * bannerWidth) + 'px'
  27.  
  28. }
  29. let bannerIndex = document.querySelector('.jd_bannerIndex')
  30.  
  31. function active(i) {
  32. for (let j = 0; j < bannerIndex.children.length; j++) {
  33. bannerIndex.children[j].className = ''
  34. }
  35. bannerIndex.children[i].className = 'active'
  36. }
  37. function banntime(){
  38. index++
  39. imgbox.style.transition = 'left 0.5s ease-in-out'
  40.  
  41. imgbox.style.left = (-index * bannerWidth) + 'px'
  42. if (index == lilist.length - 1) {
  43. active(0)
  44. index = 1
  45. setTimeout(function () {
  46.  
  47. imgbox.style.transition = 'none'
  48.  
  49. active(index - 1)
  50. imgbox.style.left = (-index * bannerWidth) + 'px'
  51.  
  52. }, 500)
  53. }
  54. active(index - 1)
  55. }
  56. let bannerInt = setInterval(banntime, 2000)
  57.  
  58. let startX, moveX, distanceX;
  59.  
  60. imgbox.addEventListener('touchstart', function (e) {
  61. startX = e.targetTouches[0].clientX
  62. clearInterval(bannerInt)
  63. })
  64.  
  65. imgbox.addEventListener('touchmove', function (e) {
  66. moveX = e.targetTouches[0].clientX
  67. distanceX = moveX - startX
  68. imgbox.style.left = (-index * bannerWidth + distanceX) + 'px'
  69. })
  70.  
  71. imgbox.addEventListener('touchend', function (e) {
  72. imgbox.style.transition = 'left 0.5s ease-in-out'
  73. let drX = distanceX % bannerWidth
  74. if (Math.abs(drX) > bannerWidth / 2) {
  75. if (drX > 0) {
  76. index--
  77. } else {
  78. index++
  79. }
  80. if (index == 0) {
  81. index = 8
  82. imgbox.style.transition = 'none'
  83. }
  84. if (index == lilist.length - 1) {
  85. index = 1
  86. imgbox.style.transition = 'none'
  87. }
  88. }
  89. active(index - 1)
  90. imgbox.style.left = (-index * bannerWidth) + 'px'
  91. bannerInt=setInterval(banntime,2000)
  92.  
  93. })

  效果:

总结 :

不管什么框架库,还是基本很重要 了解原理 才能得心应手

移动端— Touch事件轮播图的更多相关文章

  1. js 基础篇(点击事件轮播图的实现)

    轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首 ...

  2. Day050--jQuery表单事件 轮播图 插件库 ajax

    表单控件的事件 change()表单元素发生改变时触发事件 select()文本元素发生改变时触发事件 submit()表单元素发生改变时触发事件 .focus() 获取焦点 .blur() 释放焦点 ...

  3. 自实现PC端jQuery版轮播图

    最近其他项目不是很忙,被安排给公司的官网项目做一个新的页面(之前没接触公司官网项目),其中有一个用到轮播图的地方,最开始想直接用swiper.js插件实现就好了,可是发现官网项目里之前都没有引入过sw ...

  4. Swiper 移动端全屏轮播图效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  5. 移动端轮播图实现方法(dGun.js)

    本文章介绍在移动端无缝隙轮播图实现的原理,这个轮子比较简单,但可以方便刚刚入门的同学参考.最终效果是在移动端无缝隙无限滑动,可以自定义轮播的速度.支持手势左右滑动.最后会放上源码. HTML部分 &l ...

  6. 原生js实现简单移动端轮播图

    最近项目不是很忙,自己就用原生js写了一个简单的移动端轮播图的小demo,可实现自动轮播和手势滑动轮播,然后就把它记录到个人博客里.还有很多不足的地方,希望多多指出,以便改进. 1.代码部分 分为四个 ...

  7. 自己用原生JS写的轮播图,支持移动端触摸滑动,分页器圆点可以支持mouseover鼠标移入和click点击,高手看了勿喷哈

    自己用原生JavaScript写的轮播图,分页器圆点按钮可支持click点击,也可支持mouseover鼠标悬浮触发,同时支持移动端触摸滑动,有兴趣的友友可以试试哈,菜鸟一枚,高手看了勿喷,请多多指正 ...

  8. 第124天:移动web端-Bootstrap轮播图插件使用

    Bootstrap JS插件使用 > 对于Bootstrap的JS插件,我们只需要将文档实例中的代码粘到我们自己的代码中> 然后作出相应的样式调整 Bootstrap中轮播图插件叫作Car ...

  9. 自己用原生JS写的轮播图,支持移动端触屏滑动,面向对象思路。分页器圆点支持click和mouseover。

    自己用原生javascript写的轮播图,面向对象思路,支持移动端手指触屏滑动.分页器圆点可以选择click点击或mouseover鼠标移入时触发.图片滚动用的setInterval,感觉setInt ...

随机推荐

  1. Golang的基础数据类型-字符型

    Golang的基础数据类型-字符型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符型概述 Go语言中的字符有两种,即uint8类型和rune类型. uint8类型: 我们也 ...

  2. JS - 逻辑运算符 之 && 和 II

    1.JS中的||符号: 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值. 只要“||”前面为true,不管“||”后面是true还是false,都返回“ ...

  3. Hash!

    Panda一个字符串是否是另一个字符串的子串 #include<bits/stdc++.h> using namespace std; const int mod=998244353,tt ...

  4. 一百零三、SAP中常量的定义CONSTANTS

    一.代码如下 二.运行效果如下

  5. SQL 、LINQ日前比较

      using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; ...

  6. Web安全常见问题及解决方法

    关于Web安全,我们最早听到最多的就是SQL注入.例如用户在系统登录界面输入用户名和密码,提交以后,后端直接拿到数据就拼接SQL语句去查询数据库.如果在输入时进行了恶意的SQL拼装,那么最后生成的SQ ...

  7. ACM-Subset sum

    题目描述: Subset Sum Tags: 回溯 子集和问题的一个实例为〈 S,t 〉.其中,S={x1 ,x2 ,…, xn }是一个正整数的集合,c是一个正整数.子集和问题判定是否存在S的一个子 ...

  8. Newtonsoft.Json版本冲突

    如果项目中不同第三方类库分别使用了不同版本的Newtonsoft.Json,可以在配置文件中添加以下节点,将0.0.0.0-9.0.0.0此区间的Newtonsoft.Json使用全部强制指向到项目中 ...

  9. vim使用技巧(常用指令)

    1. vim基础操作 vim是从 vi 发展出来的一个文本编辑器 .代码补完.编译及错误跳转等做了一些增强 1.1 进入编辑模式 命令 含义 i和I i在光标前插入,I在行首插入. a和A a在光标后 ...

  10. file:///D:/Program%20Files/Microsoft%20Visual%20Studio%2011.0/VC/VCWizards/CodeWiz/MFC/Variable/HTML

    title VS2005  VS2008添加变量,添加函数,添加类时弹出 Script Error  解决办法 问现象描述 : 问题大家都清楚了.不赘述 错误提示 :file:///C:/Progra ...