JS 移动端轮播图案例
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 移动端轮播图案例的更多相关文章
- 原生js实现简单移动端轮播图
最近项目不是很忙,自己就用原生js写了一个简单的移动端轮播图的小demo,可实现自动轮播和手势滑动轮播,然后就把它记录到个人博客里.还有很多不足的地方,希望多多指出,以便改进. 1.代码部分 分为四个 ...
- JS+css3焦点轮播图PC端
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- jQuery与原生js实现banner轮播图
jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...
- 原生JS实现简易轮播图
原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = funct ...
- js原生实现轮播图效果(面向对象编程)
面向对象编程js原生实现轮播图效果 1.先看效果图 2.需要实现的功能: 自动轮播 点击左右箭头按钮无缝轮播 点击数字按钮切换图片 分析:如何实现无缝轮播? 在一个固定大小的相框里有一个ul标签,其长 ...
- 自己用原生JS写的轮播图,支持移动端触屏滑动,面向对象思路。分页器圆点支持click和mouseover。
自己用原生javascript写的轮播图,面向对象思路,支持移动端手指触屏滑动.分页器圆点可以选择click点击或mouseover鼠标移入时触发.图片滚动用的setInterval,感觉setInt ...
- 告别组件之教你使用原生js和css写移动端轮播图
在工作中由于项目需要要写一个轮播图,本想使用组件直接调用实现快速开发,但是一想到自己经常使用组件但是让自己手写的话确实一点都不会. 一个不会手写组件的前端程序员不是一个好程序员!于是打算自己手写一个. ...
- 移动端轮播图实现方法(dGun.js)
本文章介绍在移动端无缝隙轮播图实现的原理,这个轮子比较简单,但可以方便刚刚入门的同学参考.最终效果是在移动端无缝隙无限滑动,可以自定义轮播的速度.支持手势左右滑动.最后会放上源码. HTML部分 &l ...
- js原生代码实现轮播图案例
一.轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同! 我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好. 在这里分享一下,用j ...
随机推荐
- linux专题(七):账号管理
http://dwz.date/UDf 简介 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账 ...
- CSS文本控制
CSS文本控制 文本基础设置 字体设置 font-family可定义多个字体,系统会以从左至右的顺序进行查找,如左侧字体不存在,就往右侧找. 为什么要这么做呢?如果你只用了一种字体,而恰好人家电脑上没 ...
- unity-热更-InjectFix(一)
1 C#热更新预备知识 1.1 mono.cecil注入 使用Mono.Cecil实现IL代码注入 注入之后修改dll,新增mdb文件: 注意,待了解参数注释打开会报错: 1.2 InjectFix ...
- [Qt插件]-02创建应用程序插件(插件化开发的一种思路)
本篇是学习Qt Creator快速入门,插件开发的笔记 分为两部分 创建插件 使用插件的应用程序(测试插件) 插件是被使用的应用程序加载使用的. 是使用插件的应用程序定义接口,插件按照接口来实 ...
- Python Ethical Hacking - Packet Sniffer(2)
Capturing passwords from any computer connected to the same network. ARP_SPOOF + PACKET_SNIFFER Ta ...
- T4 分配时间 题解
问题描述 小王参加的考试是几门科目的试卷放在一起考,一共给 t 分钟来做.他现在已经知道每 门科目花的时间和得到的分数的关系,还有写名字要的时间(他写自己的名字很慢)请帮他 算一下他最高能得几分.总分 ...
- SpringBoot + Spring Cloud Consul 服务注册和发现
什么是Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更"一站式" ...
- Git 撤销更改
一.未使用 git add 缓存代码时 可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 “--” ...
- 跟老刘学运维day02~新手必须掌握的Linux命令(2)
第2章 Linux命令 1.Shell 计算机硬件:由运算器.控制器.存储器.输入/输出设备等共同组成 Shell:人与硬件的翻译官,人要想使用硬件,需要服务程序 Bash四大好处: (1)通过上下方 ...
- phpcms视频模块实现列表页打开内容页直接播放视频
摘自phpcms论坛 原链接地址:http://bbs.phpcms.cn/thread-557691-1-1.html 之前下载研究过“化蝶自在飞”开发的视频模型,发现功能不错,但唯一的缺憾是,我想 ...