<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<style>
#swiper{
height: 200px;
width: 200px;
border: 1px solid #cccccc;
margin: 0 auto;
overflow: hidden;
position: relative;
}
#swiper div{
height: 200px;
width: 200px;
float: left;
text-align: center; }
#swiper div:nth-child(1){
background: pink;
}
#swiper div:nth-child(2){
height: 200px;
width: 200px;
float: left;
text-align: center;
background: gray;
}
#swiper div:nth-child(3){
height: 200px;
width: 200px;
float: left;
text-align: center;
background: yellow;
}
#swiper div:nth-child(4){
height: 200px;
width: 200px;
float: left;
text-align: center;
background: pink;
}
#swiper div:nth-child(5){
height: 200px;
width: 200px;
float: left;
text-align: center;
background: gray;
}
#left{
position: absolute;
left: 0;
top: 50%;
transform: translate3d(0,-50%,0);
z-index: 999;
}
#right{
position: absolute;
right: 0;
top: 50%;
transform: translate3d(0,-50%,0);
z-index: 999;
}
#swiperson{
position: relative;
}
</style>
<title>Document</title>
</head>
<body>
<div id="swiper">
<button id="left">左</button>
<button id="right">右</button>
<div id="swiperson">
<div>3</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>1</div>
</div>
</div>
<script>
// 轮播图插件 // 样式布局
let allWidth = document.getElementById('swiperson').children.length * document.getElementById('swiper').clientWidth;
let oneWidth = document.getElementById('swiper').clientWidth;
document.getElementById('swiperson').style.width = allWidth + 'px';
document.getElementById('swiperson').style.transform = 'translateX(-'+ oneWidth +'px)';
// 点击逻辑
let index = 1;
let length = document.getElementById('swiperson').children.length;
let flg = true; document.getElementById("swiperson").addEventListener("transitionend", function () {
flg = true;
if(index === length-1){
document.getElementById('swiperson').style.transition = 'none';
document.getElementById('swiperson').style.transform = 'translateX(-'+ oneWidth +'px)';
index = 1
}
if(index === 0){
document.getElementById('swiperson').style.transition = 'none';
document.getElementById('swiperson').style.transform = 'translateX(-'+ oneWidth * (length-2)+'px)';
index = length - 2
}
}); function right() {
if(flg === true){
flg = false;
index++;
document.getElementById('swiperson').style.transition = 'all 1s';
document.getElementById('swiperson').style.transform = 'translateX(-'+ oneWidth*index +'px)'
}
} function left() {
if(flg === true){
flg = false;
index--;
document.getElementById('swiperson').style.transition = 'all 1s';
document.getElementById('swiperson').style.transform = 'translateX(-'+ oneWidth*index +'px)'
}
} // 点击
document.getElementById('left').onclick = function () {
left()
};
document.getElementById('right').onclick = function () {
right();
}; // 自动轮播
var time = setInterval(function () {
right();
},2000) //手动滑动逻辑
var a;
document.getElementById('swiper').ontouchstart = function (ev) {
clearInterval(time)
a = ev.changedTouches[0].pageX;
}; document.getElementById('swiper').ontouchmove = function (ev) {
let b = ev.changedTouches[0].pageX;
console.log(b)
if(b - a > 40){
console.log('右滑动')
left()
}
if(a - b > 40){
console.log('左滑动')
right(); }
} //PC 端 滑动逻辑
var a;
document.getElementById('swiper').onmousedown = function (ev) {
clearInterval(time)
console.log(ev)
a = ev.pageX; document.getElementById('swiper').onmousemove = function (ev) {
console.log('move');
let b = ev.pageX;
if(b - a > 0){
console.log('右滑动')
left()
}
if(a - b > 0){
console.log('左滑动')
right();
}
};
} document.getElementById('swiper').onmouseup = function (ev) {
document.getElementById('swiper').onmousemove = null
} </script>
</body>
</html>

  

js 原生轮播图插件的更多相关文章

  1. 封装一个简单的原生js焦点轮播图插件

    轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...

  2. js原生轮播图

    轮播图是新手学前端的必经之路! 直接上代码! <!DOCTYPE html><html lang="en"><head> <meta ch ...

  3. featureCarousel.js 3d轮播图插件

    jQuery Feature Carousel 插件是国外的一比较优秀的旋转木马图片插件. 点击这里进入原文. 插件特点: 1.处理div的3d旋转木马效果. 2.支持一个中心,2个侧面的功能 3.中 ...

  4. 小白之js原生轮播图

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  5. 原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

  6. 原生JavaScript(js)手把手教你写轮播图插件(banner)

    ---恢复内容开始--- 1.轮播图插件 1.什么是插件: 为已有的程序增加功能 2.插件的特点(为什么要做成一个插件)与注意事项: 1.通用性,可移植性强 2.兼容性:不会对其他代码产生影响 3.创 ...

  7. 原生js焦点轮播图

    原生js焦点轮播图主要注意这几点: 1.前后按钮实现切换,同时注意辅助图2.中间的button随着前后按钮对应切换,同时按button也能跳转到相应的index3.间隔调用与无限轮播.4.注意在动画时 ...

  8. 原生js实现轮播图

    原生js实现轮播图 很多网站上都有轮播图,但找到一个系统讲解的却很难,因此这里做一个简单的介绍,希望大家都能有所收获,如果有哪些不正确的地方,希望大家可以指出. 原理: 将一些图片在一行中平铺,然后计 ...

  9. 学习笔记: js插件 —— SuperSlide 2 (轮播图插件,PC用)

    SuperSlide 2  轮播图插件,较老.但还好用. 适用于PC,是绑定到jquery上的方法: $.slide(); 如果在实际中找不到.slide方法,请检查jquery等.js文件的引入次序 ...

随机推荐

  1. PAT Advanced 1044 Shopping in Mars (25) [⼆分查找]

    题目 Shopping in Mars is quite a diferent experience. The Mars people pay by chained diamonds. Each di ...

  2. react-native屏幕适配

    写一个屏幕适配类文件AdapterUtil.js,这样避免每次进行单位换算 "use strict" import {Dimensions, StatusBar, Platform ...

  3. 数据分析基础-jupyter notebook-Anaconda-Numpy

    数据分析介绍 1.数据分析是什么? 2.数据分析能干什么? 3.为什么利用Python进行数据分析? 4.数据分析过程概述 5.常用库简介 1.数据分析是什么? 数据分析是指用适当的统计分析方法对收集 ...

  4. c#学习笔记04——ADO.NET

    ADO.NET结构:ADO.NET建立在几个核心类之上,这些类可以分为两组 包含和管理数据的类:DataSet DataTable DataRow DataRelation... 链接数据源的类:Co ...

  5. POJ 1O17 Packets [贪心]

    Packets Description A factory produces products packed in square packets of the same height h and of ...

  6. nginx 反向代理学习

    目录 nginx 反向代理学习 一.正向代理和反向代理的区别 1.1正向代理 1.2 反向代理 二.nginx反向代理的使用 nginx 反向代理学习 一.正向代理和反向代理的区别 正向代理代理客户端 ...

  7. jest 测试入门(一)

    说实话,作为前端来说,单元测试,并不是一种必须的技能,但是确实一种可以让你加法的技能 之前我一个库添加了单元测试,加完之后感悟颇深,所以写下这篇文章来记录 环境搭建 一般来说,普通的库,如果没有添加 ...

  8. 01 语言基础+高级:1-7 异常与多线程_day06 【线程、同步】

    day06 [线程.同步] 主要内容 线程 同步 线程状态 一.学习目标 1. 能够描述Java中多线程运行原理 2. 能够使用继承类的方式创建多线程 3. 能够使用实现接口的方式创建多线程 4. 能 ...

  9. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十一天】(购物车+订单)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  10. linux中cd / cd~ cd cd- 和cd..之间的区别

    cd        进入用户主目录  cd ~     进入用户主目录  cd -      返回进入此目录之前所在目录  cd ..     返回上一级目录  cd ../..  返回上两级目录  ...