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. C#中String与byte[]的相互转换

    从文件中读取字符串 string filePath = @"C:\Temp.xml"; string xmlString= File.ReadAllText(filePath); ...

  2. CSS背景处理

    CSS背景处理 背景样式 背景颜色 如果想让一个区域具有纯色的背景,可以使用background-color进行设置,背景颜色可以是rgb,rgba,#16网页色. <!DOCTYPE html ...

  3. Linux 通过源代码安装和编译程序

    Linux源代码安装在平常工作学习中经常用到,总结下步骤↓↓↓ 第一步:#mount /dev/cdrom/mnt (挂载一个软盘) 第二步:手动安装httpd-2.4.25.tar.gz 依赖关系包 ...

  4. Python实现性能自动化测试的方法【推荐好文】

    1.什么是性能自动化测试? ◆ 性能 △ 系统负载能力 △ 超负荷运行下的稳定性 △ 系统瓶颈 ◆ 自动化测试 △ 使用程序代替手工 △ 提升测试效率 ◆ 性能自动化 △ 使用代码模拟大批量用户 △ ...

  5. Go Pentester - TCP Proxy

    Building a TCP Proxy Using io.Reader and io.Writer Essentially all input/output(I/O). package main i ...

  6. Maven如何利用父工程对版本进行统一管理

    项目开发中我们该怎么对项目依赖的版本进行统一管理呢 答:创建一个父级工程,让所有的业务模块都继承该父级工程,即所有的业务都为Module 在父级工程pom文件添加<dependencyManag ...

  7. vue : rem自适应的应用

    我们知道,rem是一个css单位,指的是HTML根节点的字体大小. MDN:css单位 而我们在用rem布局的时候必然会遇到一个问题:我们需要根据用户的屏幕大小去计算rem. 以下是代码. (在VUE ...

  8. python学完可以做什么?Python就业方向最全面的解析

    乔布斯说过:“每一个人都应该学习如何编程,因为编程会教会你如何思考.”下一个时代是人机交互的时代,学习编程不是要让你成为程序员,而让你理解这个时代. 点击免费领取:全网最全python学习导图+14张 ...

  9. 终于搞懂Spring中Scope为Request和Session的Bean了

    之前只是很模糊的知道其意思,在request scope中,每个request创建一个新的bean,在session scope中,同一session中的bean都是一样的 但是不知道怎么用代码去验证 ...

  10. django-rest-framework-源码解析001-整体框架

    简介 Django Rest Framework是一个强大且灵活的工具包,主要用以构建RESTful风格的Web API. Django REST Framework(简称DRF)可以在Django的 ...