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 ...
随机推荐
- python也能玩视频剪辑!moviepy操作记录总结
前几篇文章咱们介绍了一下图片的处理方式,今天咱们说说视频的处理.python能够支持视频的处理么?当然是肯定的,人生苦读,我用python.万物皆可python. moviepy库安装 今天咱们需要使 ...
- com.aliyun.openservices.shade.com.alibaba.fastjson.JSONException: exepct '[', but {, pos 1, line 1, column 2
报错原因:你放的是一个非List的对象 却想取一个List对象出来 package test; import java.text.SimpleDateFormat; import java.util. ...
- css:实现文本两行或多行文本溢出显示省略号
div{ display: -webkit-box; -webkit-box-orient: vertical; word-break: break-all; word-wrap: break-wor ...
- ISE第三方编辑器的使用
刚开始使用ISE时候感觉ISE自带的编辑器并没有什么难用的,但是在看到了小梅哥的视频教学中那样行云流水般的操作让我心动不已,由此找到了相关的编辑器.为了以后看着方便直接摘取了前人的经验在我自己的博客中 ...
- JMS微服务开发示例(一)Hello world
网关部署 1.在网关服务器上,安装.net core 3.1运行环境: 2.到 https://www.cnblogs.com/IWings/p/13354541.html 下载Gateway.zip ...
- ElasticSearch(二)Kibana、版本控制
Kibana简介: Kibana可视化界面 Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作. 你用Kibana来搜索,查看,并和存储在Elasticsearch ...
- jsp课堂笔记2
jsp页面的基本结构 jsp标记 普通html标记 变量和方法的声明 java程序片 java表达式 变量和方法的声明 <%! %> 标记符号之间声明变量和方法 成员变量即全局变 ...
- 今天完成了deviceman的程序,压缩成deivceman.rar
目录在d:\android_projects\deviceman 压成了deviceman.rar 发送到了yzx3233@sina.com
- 手写IOC容器
IOC(控制翻转)是程序设计的一种思想,其本质就是上端对象不能直接依赖于下端对象,要是依赖的话就要通过抽象来依赖.这是什么意思呢?意思就是上端对象如BLL层中,需要调用下端对象的DAL层时不能直接调用 ...
- MySQL中change与modify的用法与区别
浅析MySQL中change与modify的区别 MySQL版本 show variables like 'version'; 表结构 desc student; 修改表 例如:修改表studen ...