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--动态网页渲染pyqt5
原文:https://blog.csdn.net/tymatlab/article/details/78647543 PyQt5 渲染动态网页 示例代码: # -*- coding: UTF-8 -* ...
- 压缩并上传图片到阿里云(jfinal)
/** * 获取上传文件 * * @param r * @Return: com.oreilly.servlet.multipart.FilePart */public static FilePart ...
- FileNotFoundError: [WinError 2] 系统找不到指定的文件。 解决方案
用Idle运行Python脚本的时候发现如下错误: Traceback (most recent call last): File "C:\Users\DangKai\Desktop\pyt ...
- threadLocal源码土话解说
前言 废话不多说,先了解什么是threadLocal,下面是threadLocal类的说明注释, 这段话大致(猜的)意思是,改类为线程提供了一个局部变量,但是呢,这个变量和普通的变量又有所不同,怎么不 ...
- 手写SpringBoot自动配置及自定义注解搭配Aop,实现升级版@Value()功能
背景 项目中为了统一管理项目的配置,比如接口地址,操作类别等信息,需要一个统一的配置管理中心,类似nacos. 我根据项目的需求写了一套分布式配置中心,测试无误后,改为单体应用并耦合到项目中.项目中使 ...
- CodeForces - 722C Destroying Array (并查集/集合的插入和删除)
原题链接:https://vjudge.net/problem/511814/origin Description: You are given an array consisting of n no ...
- MySQL数据库---记录相关操作
序 表中记录的相关操作一共四种:插入,更新,删除.查询.其中使用最多,也是最难的就是查询. 记录的插入 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3… ...
- Learning in the Frequency Domain 解读
论文:Learning in the Frequency Domain, CVPR 2020 代码:https://github.com/calmevtime/DCTNet 实际的图像尺寸比较大,无法 ...
- lua中 string.find(查找获取字符串) string.gsub(查找替换字符串) string.sub(截取字符串)
> aaa='/p/v2/api/winapi/adapter/lgj'> print(string.find(aaa, "^/.+/adapter/(.*)"))1 ...
- Antd DatePicker 语言项-显示中文月份
官网:https://ant.design/components/date-picker-cn/ 如果要显示中文,官网是这么指导的: 但是,设置后并没有生效!原因是默认的中文local文件并没有月份的 ...