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常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>