js制作轮播图左右过度切换点击圆点切换自动切换

2023-10-12 18:40

本文主要是介绍js制作轮播图左右过度切换点击圆点切换自动切换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

轮播图左右过度切换点击圆点切换自动切换

效果图,以及源码

有什么不足的地方欢迎吐槽和建议

a06d9f31b14e467a93d7d3f8cdf85e51.gif

0461c8af2976484a819a48f2ee3101ad.png 使用方法

将准备好的图片替换到源码上的图片标签地址即可

其他修改根据代码注释修改即可

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>测试块</title>
</head>
<style>* {margin: 0;padding: 0;}a {text-decoration: none;}.main{margin: 10% 20%;padding: 0;};.main::after,.main::before {display: table;content: '';}.main::after {height: 0;line-height: 0;visibility: hidden;clear: both;}.main .main-Carousel {margin-top: 10px;float: left;width: 564px;border-radius: 0 18px 0 0;}.main .main-Carousel .site-Carousel-box {position: relative;left: 0;width: 564px;height: 315px;border-radius: 12px;background-color: #fff;overflow: hidden;}.main .main-Carousel .Carousel-box {position: relative;left: 0;width: 564px;height: 315px;border-radius: 12px;background-color: #fff;overflow: hidden;}.main-Carousel .Carousel-box .Carousel-site {position: absolute;left: 0;width: 3948px;height: 315px;}.main-Carousel .Carousel-box .Carousel-site .Carousel-image {width: 564px;height: 315px;float: left;overflow: hidden;}.main-Carousel .Carousel-box .Carousel-site .Carousel-image .link {display: inline-block;width: 564px;height: 315px;cursor: pointer;}.main-Carousel .Carousel-box .Carousel-site .Carousel-image .link img {width: 564px;height: 315px;border-radius: 12px;}.main .main-Carousel .site-Carousel-box .switch-button-box {min-height: 0;}.main .main-Carousel .site-Carousel-box .switch-button-box .switch-opt a {position: absolute;top: 50%;background-color: rgba(0, 0, 0, .2);}.switch-opt a,.switch-opt i {display: block;width: 20px;height: 30px;font-size: 14px;line-height: 30px;color: #fff;overflow: hidden;}.main .main-Carousel .site-Carousel-box .switch-button-box .switch-opt .button-left {left: 0;}.button-left .left-sign {margin-right: 6px;}.main .main-Carousel .site-Carousel-box .switch-button-box .switch-opt .button-left {border-top-right-radius: 15px;border-bottom-right-radius: 15px;-moz-border-top-right-radius: 15px;-moz-border-bottom-right-radius: 15px;-webkit-border-top-right-radius: 15px;-webkit-border-bottom-right-radius: 15px;}.main .main-Carousel .site-Carousel-box .switch-button-box .switch-opt .button-right {right: 0;}.button-right .right-sign {margin-left: 5px;}.main .main-Carousel .site-Carousel-box .switch-button-box .switch-opt .button-right {border-top-left-radius: 15px;border-bottom-left-radius: 15px;-moz-border-top-left-radius: 15px;-moz-border-bottom-left-radius: 15px;-webkit-border-top-left-radius: 15px;-webkit-border-bottom-left-radius: 15px;}.main .site-Carousel-box .switch-button-box .switch-dot {position: absolute;bottom: 15px;left: 50%;padding: 0 1px 0 1px;margin-left: -40px;background-color: rgba(255, 255, 255, .2);border-radius: 10px;-moz-border-radius: 10px;-webkit-border-radius: 10px;overflow: hidden;}.switch-button-box .switch-dot {text-align: center;font-size: 0;}.main .site-Carousel-box .switch-button-box .switch-dot li {display: inline-block;margin: 3px;}.main .site-Carousel-box .switch-button-box .switch-dot li a {display: block;float: left;width: 8px;height: 0;padding-top: 8px;border-radius: 4px;background-color: #fff;}.main .site-Carousel-box .switch-button-box .switch-dot .dot a {background-color: #ff5000;}
</style>
<script>/* 加载完成后运行 */window.onload = function(){/* 加载完成运行程序 */Carousel();};function Carousel() {var a = document.querySelector('.Carousel-box');/* 获取宽高 564 * 315,容器 */var b = document.querySelector('.Carousel-site');/* 获取容纳图片的盒子 */var w = a.offsetWidth;/* 获取宽度 */var c = document.querySelector('.switch-dot');/* 获取圆点的父级 */var l = document.querySelector('.button-left');/* 左按钮 */var r = document.querySelector('.button-right');/* 右按钮 */b.insertBefore(b.children[4].cloneNode(true),b.children[0]);/* 克隆图片节点4放到图片节点0的前面 */b.appendChild(b.children[1].cloneNode(true));/* 克隆图片节点0放到末尾 */var index = 1;/* 图片初始化 */var idot = 0;/* 点初始化 */var timer;/* 控制自动播放的开始和停止 */var btn = true;/* 控制点击左右按钮速度的开关(防止用户暴力点击或过快点击 */var goLeft = function(){/* 左切换模块 */if(index == 1 || idot == 0){/* 判断图片和点到达指定位置时执行以下代码 */index = 6;/* 图片节点到达1的时候无缝跳转到图片节点6 */idot = 4;/* 红点到达圆点节点0时跳转到圆点节点4 */var t = -index * w;/* index的值切换一次是564刚好是一张图片的宽度 */b.style.transitionDuration = '0s';/* 将过度设置为0s,相当于没有效果 */b.style.transform = 'translate3d(' + t + 'px' + ',' + 0 + 'px' + ',' + 0 + 'px)';/* 通过改变X轴来实现切换效果 */dot();/* 圆点切换效果 */setTimeout(function(){/* 每隔0毫秒后执行以下代码 */index = 5;/* 图片节点跳转到图片节点5 */chart();/* 图片切换过度效果 */},0);}else{index--;/* 图片往左切换时(index--;)往右边如代码(goRight)模块即可 */idot--;chart();dot();};};var goRight = function(){/* 意思与(goLeft)模块相同修改判断的值和跳转值即可 */if(index == 5 || idot == 4){index = 0;idot = 0;var t = -index * w;b.style.transitionDuration = '0s';b.style.transform = 'translate3d(' + t + 'px' + ',' + 0 + 'px' + ',' + 0 + 'px)';dot();setTimeout(function(){index = 1;chart();},0);}else{index++;idot++;chart();dot();};};var firing = function(){/* firing用于启动timer */timer = setInterval(function() {goRight(); /* 想左切换时换成(goLeft) */}, 3000);/* 每隔3秒切换一次(注意setInterval是以毫秒计算所以3000就是3秒 */};firing();/* onload ,页面加载完成时执行firing里面的所有代码 */a.onmouseover = function(){/* 鼠标悬停在css样式名为Carousel-box的html标签时停止timer */clearInterval(timer);};a.onmouseout = function(){/* 鼠标离开时重启(firing)里面的所有代码 */firing();};l.onmouseover = function(){clearInterval(timer);};l.onmouseout = function(){firing();};r.onmouseover = function(){clearInterval(timer);};r.onmouseout = function(){firing();};l.onclick = function(){if(btn){btn = false;goLeft();setTimeout(function(){btn = true;},600);};};r.onclick = function(){if(btn){btn = false;/* 鼠标点击一次后关闭点击效果 */goRight();setTimeout(function(){/* 600毫秒后重新启动点击效果 */btn = true;},600);};};d.onclick = function(e){if(e.target.tagName == 'A'){var i = e.target.dataset.index;index = i;idot = i -1;chart();dot();};};function chart(){/* 图片过度切换效果模块 */var t = -index * w;b.style.transitionDuration = '0.2s';/* 过度时间为0.2s */b.style.transform = 'translate3d(' + t + 'px' + ',' + 0 + 'px' + ',' + 0 + 'px)';};function dot(){/* 圆点切换模块 */c.querySelector('.dot').classList.remove('dot');/* 删除圆点中css样式中有dot的标签 */c.children[idot].classList.add('dot');/* 根据idot的值给对应标签没有dot的标签添加dot实现白点变红点的效果 */};
};
</script>
<body><div class="main"><div class="main-Carousel"><div class="site-Carousel-box"><div class="Carousel-box"><div class="Carousel-site"style="left: 0;transform: translate3d(-564px, 0px , 0px); transition-duration: 0.2s;"><!-- 这样操作时为了隐藏克隆的过来的节点 --><div class="Carousel-image" data-image="1"><a href="" class="link"><img src="./image/O1CN011Azqv328QcReHT5kF_!!6000000007927-0-octopus.jpg" alt=""></a></div><div class="Carousel-image" data-image="2"><a href="" class="link"><img src="./image/O1CN018Ms4l41vbzGuL3JOk_!!6000000006192-0-octopus.jpg" alt=""></a></div><div class="Carousel-image" data-image="3"><a href="" class="link"><img src="./image/O1CN01a71ilU1T2RCTvUXDY_!!6000000002324-0-tps-846-472.jpg" alt=""></a></div><div class="Carousel-image" data-image="4"><a href="" class="link"><img src="./image/O1CN01RbnhFd1wBFigMUNYq_!!6000000006269-2-tps-846-472.png" alt=""></a></div><div class="Carousel-image" data-image="5"><a href="" class="link"><img src="./image/O1CN01Sf6dER1zbJ3uVQ0lE_!!6000000006732-0-tps-846-472.jpg" alt=""></a></div></div></div><div class="switch-button-box"><div class="switch-opt"><a href="javaScript:;" class="button-left"><i class="left-sign iconfont">&#xe62c;</i></a><a href="javaScript:;" class="button-right"><i class="right-sign iconfont">&#xe62b;</i></a></div><ul class="switch-dot"><li class="dot"><a href="javaScript:void(0);" data-index="1"></a></li><li class=""><a href="javaScript:void(0);" data-index="2"></a></li><li class=""><a href="javaScript:void(0);" data-index="3"></a></li><li class=""><a href="javaScript:void(0);" data-index="4"></a></li><li class=""><a href="javaScript:void(0);" data-index="5"></a></li></ul></div></div></div></div>
</body></html>

 

 

 

这篇关于js制作轮播图左右过度切换点击圆点切换自动切换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197713

相关文章

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne