body {
margin:;
}
.hearder {
width: 100%;
height: 150px;
position: relative;
}
ul {
list-style: none;
padding:;
width: 500%;
height: 100%;
overflow: hidden;
margin-left: -200%;
}
ul>li {
width: 20%;
height: 100%;
display: inline-block;
}
ul>li {
float: left;
}
ul>li>img {
width: 100%;
height: 100%;
}
ol{
position: absolute;
bottom: 5px;
right: 5px;
list-style: none;
padding:;
margin:;
z-index:;
}
ol>li{
display:inline-block;
width: 5px;
height: 5px;
background-color: pink;
border-radius: 2px;
transform: all .3s;
}
.current{
width: 10px;
}
 <div class="hearder">
<ol>
<li class="current"></li>
<li></li>
<li></li>
</ol>
<ul>
<li>
<img src="../imges/lbt.jpg" alt="">
</li>
<li>
<img src="../imges/lbt2.jpg" alt="">
</li>
<li>
<img src="../imges/lbt3.jpg" alt="">
</li>
</ul>
</div>
 window.addEventListener('load', function () {
var header = document.querySelector('.hearder')
var ul = header.children[1];
var ol = header.children[0]
var w = header.offsetWidth; var index = 0;
var timer = setInterval(function () {
index++;
var transform = index * w;
ul.style.transition = 'all .3s'
ul.style.transform = 'translateX(' + transform + 'px)'
}, 2000) ul.addEventListener('transitionend', function () {
if (index >= 3) {
index = 0;
ul.style.transition = 'none'
var translateX = -index * w;
ul.style.transform = 'translateX(' + translateX + 'px)'
} else if (index < 0) {
index = 2;
ul.style.transition = 'none'
var translateX = -index * w;
ul.style.transform = 'translateX(' + translateX + 'px)'
}
// 小圆点跟随图片变化
ol.querySelector('.current').classList.remove('current')
ol.children[index].classList.add('current')
}) // 手指滑动轮播图
// 触摸元素touchstart 获取手指初始坐标
var startX = 0;
var moveX = 0; //因为后面会使用这个移动距离所以要定义一个全局变量
var flag = false
ul.addEventListener('touchstart', function (e) {
startX = e.targetTouches[0].pageX;
clearInterval(timer)
})
ul.addEventListener('touchmove', function (e) {
moveX = e.targetTouches[0].pagex - startX;
var translateX = -index * w + moveX;
// 手指拖动的时候不需要动画效果所以要去掉过渡效果
ul.style.transition = 'none'
ul.style.transform = 'translateX(' + translateX + 'px)'
flag = true; //如果用户手指移动过我们再去判断是否不做判断效果
e.preventDefault(); //阻止滚动屏幕的行为 }) // 手指离开 根据移动的距离判断是回弹上一张函数下一张
ul.addEventListener('touchend', function (e) {
if (flag) {
if (Math.abs(moveX) > 50) {
// 如果是右滑就播放上一张 moveX是正值
// 如果是左滑就播放下一张 moveX是负值
if (moveX > 0) {
index--;
} else {
index++;
}
var translateX = -index * w;
ul.style.transition = 'all .3s'
ul.style.transform = 'translateX(' + translateX + 'px)'
} else {
var translateX = -index * w;
ul.style.transition = 'all .1s'
ul.style.transform = 'translateX(' + translateX + 'px)'
}
}
// 手指离开就重新开启定时器
clearInterval(timer)
var timer = setInterval(function () {
index++;
var transform = index * w;
ul.style.transition = 'all .3s'
ul.style.transform = 'translateX(' + transform + 'px)'
}, 2000) })
})

JS 移动端轮播图案例的更多相关文章

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

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

  2. JS+css3焦点轮播图PC端

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

  3. jQuery与原生js实现banner轮播图

    jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...

  4. 原生JS实现简易轮播图

    原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = funct ...

  5. js原生实现轮播图效果(面向对象编程)

    面向对象编程js原生实现轮播图效果 1.先看效果图 2.需要实现的功能: 自动轮播 点击左右箭头按钮无缝轮播 点击数字按钮切换图片 分析:如何实现无缝轮播? 在一个固定大小的相框里有一个ul标签,其长 ...

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

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

  7. 告别组件之教你使用原生js和css写移动端轮播图

    在工作中由于项目需要要写一个轮播图,本想使用组件直接调用实现快速开发,但是一想到自己经常使用组件但是让自己手写的话确实一点都不会. 一个不会手写组件的前端程序员不是一个好程序员!于是打算自己手写一个. ...

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

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

  9. js原生代码实现轮播图案例

    一.轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同! 我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好. 在这里分享一下,用j ...

随机推荐

  1. Linux08 /Docker

    Linux08 /Docker 目录 Linux08 /Docker 1. docker简介/安装 2. Docker镜像加速器的设置 3. 核心三要素 镜像仓库/Registry 镜像/Image: ...

  2. Python模块03/re模块

    Python模块03/re模块 内容大纲 re模块(正则表达式) 1.re模块(正则表达式) import re s = "meet_宝元_meet" print(re.finda ...

  3. hihoCoder 1050 树中的最长路 最详细的解题报告

    题目来源:树中的最长路 解题思路:枚举每一个点作为转折点t,求出以t为根节点的子树中的‘最长路’以及与‘最长路’不重合的‘次长路’,用这两条路的长度之和去更新答案,最终的答案就是这棵树的最长路长度.只 ...

  4. 隐藏Layer中的Iframe内部元素

    隐藏Layer中的Iframe内部元素 1.Layer:一个web弹出层/窗解决方案 2.隐藏Layer弹出层中Iframe内部的元素,例子如下: 这个就是在Layer弹出层内的内容,加载完毕之后,获 ...

  5. OSCP Learning Notes - Buffer Overflows(5)

    Generating Shellcode & Gaining Root 1.Generate the shellcode on Kali Linux. LHOST is the IP of K ...

  6. C++语法小记---string类

    string类 #include <iostream> #include <string> using namespace std; // 实现字符串右移, 例子hello & ...

  7. 使用themeleaf,在JavaScript中使用for循环报错.....

    在for循环前加上/* <![CDATA[ */,在for循环后加/* ]]> */,这样就能正常解析了:如下 /* <![CDATA[ */ for (var i = 0; i & ...

  8. python为什么这么火?里面肯定是有原因的

    因为人生苦短要用python啊! 看完本文,你将在结尾得到本文的一个福利彩蛋 你瞧瞧其他语言之父... Java之父——James Gosling PHP之父 ——Rasmus Lerdorf Obj ...

  9. python基础--函数全解析(2)

    函数的重点知识补充 (1)补充的两个小知识点(global,nonlocal) 1.global的使用 我们在补充这两个知识点之前,我们先看一下下面这个例子: a = 1 def func(): pr ...

  10. PHP设计模式之----观察者模式

    一.概述 1.观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新. 2.场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后 ...