当前位置: 首页 > news >正文

JavaScript轮播图实现

这个代码创建了一个简单的轮播图,可以通过点击左右箭头或自动播放来切换图片。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>js轮播图练习</title><style>.box {width: 60vw;height: 500px;margin: auto;position: relative;overflow: hidden;}.banner {display: flex;height: 100%;transition: all 3s;}.banner>img {width: 60vw;}.but {width: 100%;height: 40px;position: absolute;top: 240px;display: flex;justify-content: space-between;}/* 箭头样式 */.but div {width: 30px;height: 40px;line-height: 40px;text-align: center;background-color: rgba(0, 0, 0, 0.4);font-size: 20px;color: white;cursor: pointer;}/* 小圆点区域 */.icon {width: 100%;height: 30px;display: flex;justify-content: center;position: absolute;bottom: 0;}.icon>span {width: 10px;height: 10px;border-radius: 100%;background-color: gray;margin-left: 5px;}</style></head><body><!-- 可视区域 --><div class="box" onmouseover="move()" onmouseout="moves()"><!-- 存放图片的容器 --><div class="banner"><img src="" alt="" class="inge" /></div><!-- 箭头区域 --><div class="but"><div class="left" onclick="sport()">←</div><div class="right" onclick="sports()">→ </div></div><!-- 小圆点区域 --><div class="icon"></div></div></body><script>let data;// 定义一个充当下标let k = 0;let dot;let inter; // 定义定时器变量// 获取大图片容器let banner = document.getElementsByClassName('banner')[0];// 获取小圆点区域let round = document.getElementsByClassName('icon')[0];// 获取左右箭头let left = document.getElementsByClassName('left');let right = document.getElementsByClassName('right');let imgwidth;// 获取JSON假数据let shop = new XMLHttpRequest();// json假数据自己写一下,图片名称用的是picshop.open('get', 'js/index.json', true);shop.send();shop.onreadystatechange = function() {if (shop.readyState == 4 && shop.status == 200) {let text = shop.responseText;data = JSON.parse(text);console.log(data);ran();}};// 渲染函数function ran() {let str = '';let roundstr = '';for (let i = 0; i < data.length; i++) {// 字符串拼接图片str += `<img src="${data[i].pic}" class="inge"/>`;// 字符串拼接小圆点指示器roundstr += `<span style="background-color:${i==0?'pink':'gray'}"></span>`}// 添加第一张图片以实现无缝轮播str += `<img src="${data[0].pic}" class="inge"/>`;// 将拼接的图片插入到轮播图长条内容区域banner.innerHTML = str;// 将拼接的小圆点指示器插入到页面中round.innerHTML = roundstr;// 获取图片的宽imgwidth = document.getElementsByClassName('inge')[0].offsetWidth;// 获取小圆点指示器dot = document.getElementsByTagName('span');// 设置定时器inter = setInterval(scrolls, 2000);dot[0].style.backgroundColor = 'pink';}// 图片自动轮播函数function scrolls() {// 增加索引 k,表示当前显示的图片k++;banner.style.transform = `translate(-${k*imgwidth}px)`;banner.style.transition = `transform 0.5s ease`;// 如果 k 超过数据长度,则重置为 0(循环播放)if (k > data.length - 1) {k = 0; // 重置索引dot[k].style.backgroundColor = 'pink';dot[data.length - 1].style.backgroundColor = 'gray';setTimeout(() => {// 设置延迟后将 banner 的位移和过渡效果重置banner.style.transform = `translate(-${k*imgwidth}px)`;banner.style.transition = `none`;}, 500);} else {dot[k].style.backgroundColor = 'pink';dot[k - 1].style.backgroundColor = 'gray';}}// 鼠标移出移入function move() {clearInterval(inter);}function moves() {inter = setInterval(scrolls, 2000);}// 点击左右箭头let throttle = false; // 声明节流function sport() {// 判断如果正在节流则返回if (throttle) return;// 开始节流throttle = true;//清除定时器以避免冲突clearInterval(inter);if (k == 0) {k = 0; // 重置索引dot[k].style.backgroundColor = 'gray';dot[data.length - 1].style.backgroundColor = 'pink';// 将索引设置为数据长度,以便准备显示最后一张图片k = data.length;banner.style.transform = `translate(-${k * imgwidth}px)`; // 向左滑动至最后一张banner.style.transition = `none`; // 移除过渡效果} else {dot[k].style.backgroundColor = 'gray'; // 当前小圆点设为灰色dot[k - 1].style.backgroundColor = 'pink'; // 前一小圆点设为粉色}setTimeout(() => {k--;banner.style.transform = `translate(-${k*imgwidth}px)`; // 更新位移banner.style.transition = `transform 0.5s ease`; // 设置过渡效果}, 10);// 设置定时器,0.5秒后取消setTimeout(() => {throttle = false;}, 500);}// 点击向右移动function sports() {if (throttle) return;throttle = true; // 开始节流clearInterval(inter); // 清除定时器scrolls(); // 调用滚动函数// 设置定时器,0.5秒后取消节流setTimeout(() => {throttle = false;}, 500);}</script>
</html>

JavaScript轮播图,此代码他:

  • 实现了切换图片的功能(上一张、下一张、指定索引)。
  • 创建了小圆点并更新其状态。
  • 实现了自动播放功能,每2秒切换一次图片。

相关文章:

JavaScript轮播图实现

这个代码创建了一个简单的轮播图&#xff0c;可以通过点击左右箭头或自动播放来切换图片。 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>js轮播图练习</title><style>.box {width: 60vw;height: 500px;m…...

【LLM开源项目】LLMs-开发框架-Langchain-Tutorials-Basics-v2.0

【1】使用LCEL构建简单的LLM应用程序(Build a Simple LLM Application with LCEL) https://python.langchain.com/docs/tutorials/llm_chain/ 如何使用LangChain构建简单的LLM应用程序。功能&#xff1a;将把文本从英语翻译成另一种语言。 实现&#xff1a;LLM调用加上一些提…...

Python 爬取天气预报并进行可视化分析

今天&#xff0c;我们就来学习如何使用 Python 爬取天气预报数据&#xff0c;并用数据可视化的方式将未来几天的天气信息一目了然地展示出来。 在本文中&#xff0c;我们将分三步完成这一任务&#xff1a; 使用 Python 爬取天气数据数据解析与处理用可视化展示天气趋势 让我…...

最左侧冗余覆盖子串

题目描述 给定两个字符串 s1 和 s2 和正整数 k&#xff0c;其中 s1 长度为 n1&#xff0c;s2 长度为 n2。 在 s2 中选一个子串&#xff0c;若满足下面条件&#xff0c;则称 s2 以长度 k 冗余覆盖 s1 该子串长度为 n1 k 该子串中包含 s1 中全部字母 该子串每个字母出现次数…...

性能测试-JMeter(2)

JMeter JMeter断言响应断言JSON断言断言持续时间 JMeter关联正则表达式提取器正则表达式正则表达式提取器 XPath提取器JSON提取器 JMeter属性JMeter录制脚本 JMeter断言 断言&#xff1a;让程序自动判断预期结果和实际结果是否一致 提示&#xff1a; -Jmeter在请求的返回层面有…...

芯课堂 | Synwit_UI_Creator(μgui)平台之图像处理篇

今天小编给大家介绍的是UI_Creator&#xff08;μgui&#xff09;平台下关于图像处理的选项。 UI_Creator&#xff08;μgui&#xff09;平台图片类控件有图像控件和分级图像控件&#xff0c;均包含以下选项&#xff1a; 1、消除水波纹&#xff1a; 由于16位真彩色&#xff08…...

QT C++ 软键盘/悬浮键盘/触摸屏键盘的制作

目录 1、前言 2、界面设计 3、英文、数字的输入 4、符号的输入 5、中文的输入 6、中文拼音库的选择 7、其他 8、结语 1、前言 使用QT C在带显示器的Linux系统 开发板上&#xff08;树莓派等&#xff09;编写操作UI界面时&#xff0c;很多时候都需要一个软键盘来输入文字…...

element-ui点击文字查看图片预览功能

今天做一个点击文字查看图片的功能&#xff0c;大体页面长这样子&#xff0c;点击查看显示对应的图片 引入el-image-viewer&#xff0c;点击的文字时候设置图片预览组件显示并传入图片的地址 关键代码 <el-link v-if"scope.row.fileList.length > 0" type&…...

SpringBoot集成Redis使用Cache缓存

使用SpringBoot集成Redis使用Cache缓存只要配置相应的配置类&#xff0c;然后使用Cache注解就能实现 RedisConfig配置 新建RedisConfig配置类 package com.bdqn.redis.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annota…...

【瑞萨RA8D1 CPK开发板】lcd显示

1.8寸lcd使用gpio模拟spi驱动 由于板子引出的接口限制&#xff0c;故使用gpio模拟spi驱动中景园的1.8寸lcd 1.77寸液晶屏 1.8寸TFT LCD SPI TFT彩屏st7735驱动128x160高清屏-淘宝网 (taobao.com) 使用RASC 的gpio配置 根据厂家提供的驱动文件移植 #define LCD_SCLK_Clr() g…...

算法收敛的一些证明方法与案例

证明一个算法收敛通常涉及多个角度&#xff0c;以下是一些常用的方法和示例&#xff1a; 一、方法 1. 数学归纳法 通过数学归纳法证明算法在每一步的输出结果都在收敛范围内。 示例&#xff1a;考虑一个递归算法&#xff0c;假设我们要证明它在每一步中输出的值逐渐接近目标…...

基于vue框架的蛋糕店网上商城740g7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,店长,商品分类,商品信息,订单投诉,反馈信息 开题报告内容 基于Vue框架的蛋糕店网上商城开题报告 一、项目背景与意义 随着互联网技术的快速发展和普及&#xff0c;电子商务已成为现代商业的重要组成部分。蛋糕作为一种受欢迎的美…...

你真的了解Canvas吗--解密六【ZRender篇】

目录 &#x1f4da;入口 Circle - 图形 Group - 组 事件捕获 - 流程 step - 1 step - 2 总结 这篇文章我们讲讲Circle圆形&#xff0c;Group组的使用以及大家最熟悉又陌生的事件捕获和冒泡在ZRender中的实现&#xff0c;篇幅较长&#xff0c;且听我慢慢分析。 &#x…...

孤独相伴 - 结婚十七年

07年的今天&#xff0c;我和老公请假&#xff0c;去了新加坡的大使馆领证。 17年后的今天&#xff0c;此刻凌晨16分&#xff0c; 这是17年来我第一次这么早写结婚纪念&#xff0c;只是凑巧。 今天的心情莫名其妙。 此刻&#xff0c;两个词出现在我的脑海&#xff1a;孤独 &am…...

json-server,跨域

启动json-serer json-server --watch db.json 注意&#xff1a; db.json为json文件的名称&#xff0c;你自己的文件名叫什么&#xff0c;就启动对应的文件就可以了 启动json-server的时候&#xff0c;必须在你db.json所在的文件夹下进行启动 这样服务器就可以启动成功了&…...

【Conda】修复 Anaconda 安装并保留虚拟环境的详细指南

目录 流程图示1. 下载 Anaconda 安装程序2. 重命名现有的 Anaconda 安装目录Windows 操作系统Linux 操作系统 3. 运行新的 Anaconda 安装程序Windows 操作系统Linux 操作系统 4. 同步原环境使用 robocopy 命令&#xff08;Windows&#xff09;使用 rsync 命令&#xff08;Linux…...

转行高薪 AI 产品经理,快速入门方法在此处

根据《2024年中国AI大模型场景探索及产业应用调研报告》&#xff0c;当前整体AI大模型行业仍然处于萌芽期&#xff0c;但市场规模增速较快。2023年我国AI大模型行业规模达到了147亿元&#xff0c;近三年复合增速高达114%。预计2024年&#xff0c;该市场规模将进一步增长至216亿…...

初识环境变量

初识环境变量 目录&#xff1a; 什么是环境变量常见的环境变量Linux中与环境变量的有关的命令如何获取环境变量环境变量的特点环境变量的作用 1.什么是环境变量 我们在Linux操作系统下&#xff0c;使用指令&#xff0c;比如ls,pwd,cd等等&#xff0c;可以直接使用&#xff0c…...

成像基础 -- 景深计算

景深计算 景深&#xff08;Depth of Field, DOF&#xff09;指的是在摄影中&#xff0c;能够清晰成像的物体前后距离的范围。景深的大小取决于多个因素&#xff0c;包括焦距、光圈值、物距以及相机感光元件的尺寸。 1. 景深的主要参数 焦距&#xff08; f f f&#xff09;&a…...

Git中从dev分支恢复master分支

问题 需要从dev分支恢复master分支。之前搞错远程地址了&#xff0c;把master分支搞乱了&#xff0c;现在需要从dev分支恢复代码到master分支。 步骤 git checkout dev # 切换到 dev 分支 git branch -D master # 删除本地 master 分支 git checko…...

SAP 梳理思路

蓝图 业务/需求背景 解决方案 配置 操作手册 程序 优化...

如何快速实现GitHub界面全面中文化:3分钟安装终极汉化插件

如何快速实现GitHub界面全面中文化&#xff1a;3分钟安装终极汉化插件 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese GitHub中文插件…...

Claude Code + Superpowers 实战:AI 驱动智能客服管理系统开发

当"会干活的 AI"遇上"会按流程干活的 AI"&#xff0c;研发效率的质变由此开始 一、引言&#xff1a;AI 编程的"甜蜜陷阱" 在 AI 编程助手普及的今天&#xff0c;你可能有这样的体验&#xff1a; 让 AI "加个购物车功能"&#xff0c;它…...

手把手教你搞定KEIL4.74社区版激活:从注册到填问卷拿License的全流程避坑

KEIL 4.74社区版激活全流程实战指南&#xff1a;从零开始到成功获取License的完整攻略 作为一名嵌入式开发新手&#xff0c;第一次接触KEIL这个强大的开发环境时&#xff0c;难免会被其复杂的激活流程搞得晕头转向。特别是社区版的KEIL 4.74&#xff0c;虽然免费&#xff0c;但…...

Speakeasy安全研究:仿真环境中的反调试与反仿真技术对抗

Speakeasy安全研究&#xff1a;仿真环境中的反调试与反仿真技术对抗 【免费下载链接】speakeasy Windows kernel and user mode emulation. 项目地址: https://gitcode.com/gh_mirrors/spe/speakeasy Speakeasy作为一款强大的Windows恶意代码仿真框架&#xff0c;通过模…...

告别‘自消’:深入浅出聊聊协方差矩阵重建与对角加载如何拯救你的波束形成器

告别‘自消’&#xff1a;深入浅出聊聊协方差矩阵重建与对角加载如何拯救你的波束形成器 雷达工程师老张盯着屏幕上的波束图皱起了眉头——明明仿真时完美的指向性波束&#xff0c;在实际测试中却像被"咬掉一块"的月饼&#xff0c;目标信号区域出现了诡异的凹陷。这种…...

第4篇:角色设定与上下文管理——让AI扮演专家

第4篇&#xff1a;角色设定与上下文管理——让AI扮演专家适用人群&#xff1a;进阶 | 字数&#xff1a;约25,000字 | 预计阅读时间&#xff1a;60分钟前言 在前面三篇中&#xff0c;我们完成了"入门三部曲"&#xff1a;知道了提示词的本质&#xff0c;学会了黄金四步…...

新手必看:Infineon UDE软件License加载保姆级教程(含永久/临时版区别与常见报错解决)

Infineon UDE软件License配置全指南&#xff1a;从加载到深度排错 引言 在嵌入式开发领域&#xff0c;Infineon UDE&#xff08;Universal Debug Engine&#xff09;作为一款功能强大的调试工具&#xff0c;被广泛应用于汽车电子、工业控制等高可靠性场景。然而对于刚接触这款工…...

CVAT管理员必看:用户权限、任务分割与Datumaro数据导入导出全流程详解

CVAT管理员实战指南&#xff1a;权限配置、任务优化与数据流转全解析 1. 权限管理的艺术&#xff1a;从基础配置到高级控制 在CVAT平台中&#xff0c;权限管理是确保数据安全与协作效率的核心机制。不同于普通标注员视角&#xff0c;管理员需要掌握三个关键权限层级&#xff1a…...

一款支持USB2.0的4端口集线器芯片

GM8220C是成都振芯科技推出的一款支持USB2.0的4端口集线器芯片。它充分满足USB2.0和充电协议&#xff08;BC1.1/1.2&#xff09;&#xff0c;具备多种工作模式和充电支持功能&#xff0c;适用于多种设备。1. 主要特征协议兼容&#xff1a;兼容USB2.0协议&#xff0c;并向下兼容…...