JavaScript轮播图

HTML部分

<div class="box" onmouseover="over()" onmouseout="noover()"><img src="./img/zuo.png" alt="" class="left_arrow" onclick="left_last()"><img src="./img/yy.png" alt="" class="right_arrow" onclick="right_word()"><div id="carousel"></div><div class="round"></div></div>

JavaScript部分:携带注释哟家人们

<script>let data; // 声明一个变量用于存储从服务器获取的数据let k = 0; // 当前显示的图片索引let imgwidth; // 图片宽度let imgheight; // 图片高度let inter; // 用于存储定时器的变量// 创建一个XMLHttpRequest对象用于发送请求let xhr = new XMLHttpRequest();// 设置请求方式和请求地址xhr.open('get', './js/banner.json', true);// 发送请求xhr.send();// 接收返回的响应数据xhr.onreadystatechange = function() {if (xhr.readyState == 4 && xhr.status == 200) {let text = xhr.responseText;// 将获取的文本数据转换为JSON格式data = JSON.parse(text);// 调用展示图片的函数console.log(data); // 打印获取到的数据到控制台// 调用展示图片的函数show(data);}};// 获取轮播图容器元素let carsoule = document.getElementById('carousel');function show(data) {let str = ``; // 声明一个空字符串用于存储要渲染的图片标签let sti = ``; // 声明一个空字符串用于存储轮播图指示器的标签for (let i = 0; i < data.imge.length; i++) {// 渲染图片到页面中str += `<img src="${data.imge[i]}" alt="" class="img_carousel">`;// 根据索引,渲染轮播图指示器if (i == 0) {sti += `<div style="background-color: aqua;"></div>`;} else {sti += `<div></div>`;}}// 将最后一张图片再次添加到轮播图容器中,用于实现循环播放str += `<img src="${data.imge[0]}" alt="">`;// 将图片和轮播图指示器渲染到页面中document.getElementById('carousel').innerHTML = str;document.getElementsByClassName('round')[0].innerHTML = sti;// 获取第一张图片的宽度imgwidth = document.getElementsByClassName('img_carousel')[0].offsetWidth;// 调用轮播功能noover();}// 获取轮播图指示器的所有子元素let dots = document.getElementsByClassName('round')[0].children;// 下一张图片函数function next() {k++; // 索引加1,显示下一张图片carsoule.style.marginLeft = "-" + imgwidth * k + "px"; // 设置轮播图容器的左边距carousel.style.transition = "margin-left 1s"; // 设置过渡效果// 如果达到最后一张图片,回到第一张图片if (k == data.imge.length) {setTimeout(function() {carousel.style.transition = "none"; // 去掉过渡效果k = 0; // 将索引设置为0,回到第一张图片carousel.style.marginLeft = `-${k * 100}%`; // 设置轮播图容器的左边距}, 1000);}// 根据索引,设置轮播图指示器的样式if (k < dots.length) {dots[k].style.background = "aqua"; // 当前图片指示器背景颜色为aquadots[k - 1].style.background = "pink"; // 上一张图片指示器背景颜色为pink} else if (k == dots.length) {dots[0].style.background = "aqua"; // 第一张图片指示器背景颜色为aquadots[k - 1].style.background = "pink"; // 最后一张图片指示器背景颜色为pinkk = 0; // 将索引设置为0,回到第一张图片}}// 自动轮播函数function noover() {inter = setInterval(next, 2000); // 每2秒调用一次next函数,实现自动轮播}// 鼠标悬停在轮播图上,停止自动轮播function over() {clearInterval(inter); // 清除定时器,停止自动轮播}// 获取右箭头元素let right = document.getElementsByClassName('right_arrow')[0];// 点击右箭头切换到下一张图片function right_word() {right.onclick = null; // 防止连续点击next(); // 调用下一张图片函数// 1.5秒后恢复右箭头的点击事件setTimeout(function() {right.onclick = right_word;}, 1500);}// 获取左箭头元素// let left = document.getElementsByClassName('left_arrow')[0];// 点击左箭头切换到上一张图片function left_last() {k--; // 索引减1,显示上一张图片// 如果索引小于0,回到最后一张图片if (k < 0) {k = dots.length; // 将索引设置为指示器数量,显示最后一张图片carousel.style.transition = ""; // 去掉过渡效果carsoule.style.marginLeft = "-" + imgwidth * k + "px"; // 设置轮播图容器的左边距// 0.01秒后,过渡效果生效,显示倒数第二张图片setTimeout(function() {k--; // 索引减1,显示倒数第二张图片carousel.style.transition = "all 1s"; // 添加过渡效果carsoule.style.marginLeft = "-" + imgwidth * k + "px"; // 设置轮播图容器的左边距dots[k].style.background = "aqua"; // 当前图片指示器背景颜色为aquadots[0].style.background = "pink"; // 第一张图片指示器背景颜色为pink}, 10);} else {carousel.style.transition = "all 1s"; // 添加过渡效果carsoule.style.marginLeft = "-" + imgwidth * k + "px"; // 设置轮播图容器的左边距dots[k].style.background = "aqua"; // 当前图片指示器背景颜色为aquadots[k + 1].style.background = "pink"; // 下一张图片指示器背景颜色为pink}}</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/388026.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类和对象(中 )C++

默认成员函数就是用户不显示实现&#xff0c;编译器会自动实现的成员函数叫做默认成员函数。一个类&#xff0c;我们在不写的情况下&#xff0c;编译器会自动实现6个默认成员函数&#xff0c;需要注意&#xff0c;最重要的是前4个&#xff0c;其次就是C11以后还会增加两个默认成…

onlyoffice用nginx反向代理

我对于onlyoffice的需求就是当个在线编辑器使用。在集成react的时候之前都是写的绝对路径的地址&#xff0c;这样在需要迁移应用的时候就造成了巨大的麻烦&#xff0c;所以我决定用nginx做反向代理&#xff0c;这样我集成的时候就不用每次都修改源码中的地址了。 一开始写的代…

昇思25天学习打卡营第XX天|基于MindSpore通过GPT实现情感分类

其实数据集和模型的其他大平台接口的&#xff0c;感觉不用非包在自己包里 %env HF_ENDPOINThttps://hf-mirror.com mindnlp.transformers 库中的 GPTTokenizer 类来加载和处理与GPT&#xff08;生成式预训练变换器&#xff09;模型兼容的分词器&#xff0c;并添加特殊的控制标…

Spring源码(八)--Spring实例化的策略

Spring实例化的策略有几种 &#xff0c;可以看一下 InstantiationStrategy 相关的类。 UML 结构图 InstantiationStrategy的实现类有 SimpleInstantiationStrategy。 CglibSubclassingInstantiationStrategy 又继承了SimpleInstantiationStrategy。 InstantiationStrategy I…

SpringBoot通过3种方式实现AOP切面

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

Sonar-Scanner: 静态代码分析的利器

Sonar-Scanner: 静态代码分析的利器 懂得享受生活的过程&#xff0c;人生才会更有乐趣。每个人都会遇到一些陷阱&#xff0c;每个人都有过去&#xff0c;有的甚至是失败的往事。过去的错误和耻辱只能说明过去&#xff0c;真正能代表人一生的&#xff0c;是他现在和将来的作为。…

【更新2022】省级农民专业合作社数量 无缺失 2006-2022

省级农民专业合作社数量是研究中国农村经济组织和农业社会化服务的重要数据。这些数据可以用来分析不同省份农业生产组织形式的多样性及其对农民生产、技术创新和收入增长的影响。研究者可以基于这些数据&#xff0c;探讨农民专业合作社在提升农产品质量、优化农业生产结构和推…

Transformer处理文本分类实例(Pytorch)

文章目录 Transformer处理文本分类实例参考网站我们构建一个实例问题,预测AG_NEWS的文本分类AG_NEWS数据集介绍预测目标总体思路(简述)主要流程数据预处理dataset构建(不是重点)构建词表 编写处理模型执行词嵌入位置编码(PositionalEncoding)(*核心)多层Transformer模块多头自注…

Mojo数据类型详解

Mojo 中的所有值都分配有相对应的数据类型&#xff0c;大多数类型都是由结构体定义的标称的类型。这些类型是标称的&#xff08;或“命名的”&#xff09;&#xff0c;因为类型相等性是由类型的名称而不是其结构决定的。 有一些类型未定义为结构&#xff0c;例如下面的两种情况…

百款精选的HTML5小游戏源码,你可以下载并直接运行在你的小程序或者自己的网站上

今天我带来了一份特别的礼物——百款精选的HTML5小游戏源码&#xff0c;你可以下载并直接运行在你的小程序或者自己的网站上&#xff0c;只需双击index.html即可开始。无论你是在寻找创意引流&#xff0c;还是想为你的网站增添互动性&#xff0c;这些小游戏都能帮你实现&#x…

办公必备!一键把PDF转换为PPT文件,只需这3款神器!

在当今数字化办公环境中&#xff0c;文件格式的转换已成为提高工作效率的关键因素之一。其中&#xff0c;PDF(便携式文档格式)和PPT(PowerPoint演示文稿)是两种广泛使用的文件格式。然而&#xff0c;有时我们需要将PDF文件转换为PPT格式&#xff0c;以便进行编辑或演示。 为方…

数据结构的基本概念与算法

数据结构的基本概念与算法 什么是数据&#xff1f; 数据是信息的载体&#xff0c;是描述客观事物属性的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合&#xff1b;总结来说 -> 数据就是计算机程序加工的原料&#xff1b; 数据元素、数据项&#xf…

<数据集>棉花识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;13765张 标注数量(xml文件个数)&#xff1a;13765 标注数量(txt文件个数)&#xff1a;13765 标注类别数&#xff1a;4 标注类别名称&#xff1a;[Partially opened, Fully opened boll, Defected boll, Flower] 序…

Java面试——Tomcat

优质博文&#xff1a;IT_BLOG_CN 一、Tomcat 顶层架构 Tomcat中最顶层的容器是Server&#xff0c;代表着整个服务器&#xff0c;从上图中可以看出&#xff0c;一个Server可以包含至少一个Service&#xff0c;用于具体提供服务。Service主要包含两个部分&#xff1a;Connector和…

SQL labs-SQL注入(七,sqlmap对于post传参方式的注入,2)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。参考&#xff1a;SQL注入之Header注入_sqlmap header注入-CSDN博客 序言&#xff1a; 本文主要讲解基于SQL labs靶场&#xff0c;sqlmap工具进行的post传参方式的SQL注入&#xff0c…

【Java版数据结构】初识泛型

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 br />个人主页&#xff1a;Gu Gu Study专栏&#xff1a;Java版数据结构 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1…

【全国大学生电子设计竞赛】2024年E题

&#x1f970;&#x1f970;全国大学生电子设计大赛学习资料专栏已开启&#xff0c;限时免费&#xff0c;速速收藏~

快速查找WGS1984 坐标地理坐标系转UTM投影坐标的多种方法

在arcgis中如果是要计算长度或面积&#xff0c;则需要将矢量图层地理坐标系转为投影坐标系&#xff0c;下面总结了几种快速找到“WGS 1984”&#xff08;UTM ZONE&#xff09;投影带号的方法。 一、准备工作 软件&#xff1a;arcmap 示例数据&#xff1a;安微省shp矢量图 二…

删除链表的倒数第N个结点(LeetCode)

题目 给你一个链表&#xff0c;删除链表的倒数第个结点&#xff0c;并且返回链表的头结点。 示例1&#xff1a; 输入&#xff1a;&#xff0c; 输出&#xff1a; 示例2&#xff1a; 输入&#xff1a;&#xff0c; 输出&#xff1a; 示例3&#xff1a; 输入&#xff1a;&#x…

申瓯通信设备有限公司在线录音管理系统(复现过程)

漏洞简介 申瓯通信设备有限公司在线录音管理系统 index.php接口处存在任意文件读取漏洞&#xff0c;恶意攻击者可能利用该漏洞读取服务器上的敏感文件&#xff0c;例如客户记录、财务数据或源代码&#xff0c;导致数据泄露 一.复现过程 fofa搜索语句:title"在线录音管…