一、简易轮播图源代码 

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>简易轮播图显示</title><style type="text/css">*{margin: 0 auto;padding: 0;/* 全局重置边距 */}p{text-align: center;font-size: 25px;}.imgBox{width: 700px;height: 320px;padding: 0 auto;position: relative;/* 全局重置边距 */text-align: center;}.box{list-style-type: none;}.img-slide{width: 700px;height: 320px;/* 图片尺寸与容器一致 */padding: 0 auto;}	#prev,#next{width: 95px;height: 95px;position: absolute;top: 115px;/* 垂直居中 */z-index: 1000;/* 确保在图片上方 */opacity: 0.2;/* 半透明 */transition: opacity 0.3s; /* 透明度过渡效果 */background-image: url(./left-right.jpg);background-repeat: no-repeat;}#prev{left: 0px;background-position: 0 -80px;}#next{right: 0px;background-position: -165px -80px;}#prev:hover,#next:hover{opacity: 0.7;/* 悬停时更明显 */}#circlebutton ul{position: absolute;bottom: 20px;/* 固定在底部 */left: 50%;transform: translateX(-50%);/* 精确水平居中 */text-align: center;list-style-type: none;display: flex;/* 弹性布局 */justify-content: center;align-items: center;gap: 10px;/* 项间距 */}#circlebutton ul li{display: flex;justify-content: center;align-items: center;}.divEle{width: 30px;height: 30px;background: rgba(221, 221, 221, 0.7);/* 半透明灰色 */border-radius: 50%;/* 圆形 */text-align: center;display: flex;justify-content: center;align-items: center;/* 文字居中 */cursor: pointer;color: #333;font-size: 14px;font-weight: bold;transition: all 0.3s ease;/* 平滑过渡 */}.divEle.active {background: rgba(255, 0, 0, 0.7);/* 激活状态红色 */color: white;transform: scale(1.1);/* 轻微放大 */}</style></head><body><p>简易轮播图<p><div class="imgBox"><!-- 左右导航按钮 --><div id="prev"></div><div id="next"></div><!-- 图片列表 --><ul class="box"><li><img class="img-slide img1" src="./s1.jpg" alt="1" style="display: block;"></li><li><img class="img-slide img2" src="./s2.jpg" alt="2" style="display: none;"></li><li><img class="img-slide img3" src="./s3.jpg" alt="3" style="display: none;"></li><li><img class="img-slide img4" src="./s4.jpg" alt="4" style="display: none;"></li><li><img class="img-slide img5" src="./s5.jpg" alt="5" style="display: none;"></li></ul><!-- 圆形页码指示器 --><div id="circlebutton"><ul><li><div class="divEle active">1</div></li><li><div class="divEle">2</div></li><li><div class="divEle">3</div></li><li><div class="divEle">4</div></li><li><div class="divEle">5</div></li></ul></div></div><script type="text/javascript">window.onload = function() {var index = 0;// 当前图片索引var divCon = document.getElementsByClassName("divEle");// 所有指示器var imgEle = document.getElementsByClassName("img-slide");// 所有图片var divPrev = document.getElementById("prev");// 上一张按钮var divNext = document.getElementById("next");// 下一张按钮var change1;// 定时器变量// 初始化轮播change1 = setInterval(autoChangeImg, 3000);// 初始化3秒自动切换// 为指示器添加事件for(var i = 0; i < divCon.length; i++) {divCon[i].index = i;// 存储索引divCon[i].onmouseover = function() {if(index == this.index) {return;// 已是当前则不处理}index = this.index;changeImg();clearInterval(change1);change1 = setInterval(autoChangeImg, 3000);}}function changeImg() {// 重置所有状态for(var i = 0; i < imgEle.length; i++) {imgEle[i].style.display = 'none';divCon[i].classList.remove("active");}// 设置当前状态imgEle[index].style.display = 'block';divCon[index].classList.add("active");}function autoChangeImg() {index++;if(index >= imgEle.length) {index = 0;// 循环}changeImg();// 更新显示}// 上一张按钮divPrev.onclick = function() {clearInterval(change1);index--;if(index < 0) {index = imgEle.length - 1;}changeImg();change1 = setInterval(autoChangeImg, 3000);};// 下一张按钮divNext.onclick = function() {clearInterval(change1);index++;if(index >= imgEle.length) {index = 0;}changeImg();change1 = setInterval(autoChangeImg, 3000);};// 鼠标悬停暂停divNext.onmouseover = function() {clearInterval(change1);}divPrev.onmouseover = function() {clearInterval(change1);}// 鼠标离开恢复divPrev.onmouseout = function() {change1 = setInterval(autoChangeImg, 3000);}divNext.onmouseout = function() {change1 = setInterval(autoChangeImg, 3000);}}</script></body>
</html>


 

二、 整体与核心

1.整体结构分析

这个轮播图包含三个主要部分:

(1)图片展示区:显示当前图片

(2)导航按钮:左右箭头切换图片

(3)页码指示器:底部圆形页码显示当前图片位置

2.核心功能流程

(1)初始化

①加载第一张图片

②启动3秒自动轮播

③第一个指示器显示为激活状态

(2)自动轮播

①每3秒切换到下一张

②更新指示器状态

③循环播放

(3)用户交互

①点击左右按钮切换

②点击指示器跳转

③悬停导航按钮暂停

(4)状态同步

①图片显示与指示器状态始终保持一致

②任何交互后重置自动轮播计时器

3.轮播图实现原理

(1)初始化:

默认显示第一张图片(display:block),其他隐藏(display:none)。第一个指示器激活(active类)。

(2)自动轮播:

使用setInterval每隔3秒调用一次autoChangeImg函数,将index加1,然后调用changeImg函数更新显示。

(3)切换图片函数changeImg:

隐藏所有图片,移除所有指示器的active类,然后显示当前索引的图片并给对应指示器添加active类。

(4)左右按钮:

点击时清除定时器,然后改变index(上一张index--,下一张index++),处理边界(循环),然后更新图片并重新设置定时器。

(5)指示器:

鼠标悬停时,将index设置为指示器的索引,然后更新图片,并重置定时器。

(5)鼠标悬停在左右按钮上时,清除定时器(暂停自动轮播),鼠标移出时重新开始定时器。

三、HTML结构详解

1. HTML知识点

文档类型声明:<!DOCTYPE html>

字符编码设置:<meta charset="utf-8">

标题:<title>

样式表:<style>

脚本:<script>

结构元素:<div>, <ul>, <li>, <img>

类名(class)和ID:用于CSS和JS选择元素

2.HTML结构详解

<div class="imgBox"><!-- 左右导航按钮 --><div id="prev"></div><div id="next"></div><!-- 图片列表 --><ul class="box"><li><img class="img-slide img1" src="./s1.jpg" alt="1" style="display: block;"></li><!-- 其他图片项 --></ul><!-- 圆形页码指示器 --><div id="circlebutton"><ul><li><div class="divEle active">1</div></li><!-- 其他页码项 --></ul></div>
</div>

知识点:

  1. div容器:<div>用于组织页面内容
  2. 列表元素:<ul>无序列表和<li>列表项组织图片和页码
  3. 图片元素:<img>标签显示图片
  4. ID和类名:id用于唯一标识元素(如prev, next)
  5. class用于标识一组元素(如divEle, img-slide)

四、CSS样式解析

1. CSS知识点

全局样式重置:* { margin:0; padding:0; } 清除默认边距

文本居中:text-align: center

盒模型:width, height, padding

定位:position: relative(相对定位)和position: absolute(绝对定位)结合使用

弹性布局:display: flex, justify-content, align-items

圆角:border-radius: 50% 实现圆形

过渡效果:transition

背景图片:background-image, background-repeat, background-position

透明度:opacity

层叠顺序:z-index

鼠标指针样式:cursor: pointe

2.CSS样式解析

(1)全局设置

* {margin: 0 auto;padding: 0;
}

作用:重置所有元素的默认边距和内边距
知识点:*是通配符选择器,选择页面所有元素 

(2)轮播图容器

.imgBox {width: 700px;height: 320px;position: relative;
}

作用:定义轮播图容器的大小和定位方式
知识点:position: relative设置相对定位,为内部绝对定位元素提供参考

(3)导航按钮样式

#prev, #next {width: 95px;height: 95px;position: absolute;top: 115px;z-index: 1000;opacity: 0.2;transition: opacity 0.3s;
}

作用:设置左右按钮的样式

知识点:

position: absolute绝对定位,相对于最近的定位祖先元素

z-index控制元素堆叠顺序

opacity设置透明度

transition添加透明度变化动画

(4)页码指示器样式

.divEle {width: 30px;height: 30px;border-radius: 50%;background: rgba(221, 221, 221, 0.7);transition: all 0.3s ease;
}.divEle.active {background: rgba(255, 0, 0, 0.7);color: white;transform: scale(1.1);
}

作用:创建圆形页码指示器及其激活状态

知识点:

border-radius: 50%创建圆形

rgba()设置带透明度的颜色

transform: scale(1.1)轻微放大效果

.active类表示当前激活状态

五、JavaScript功能解析

1. JavaScript知识点

事件:window.onload(页面加载完成时执行)

获取元素:document.getElementsByClassName, document.getElementById

定时器:setInterval, clearInterval

循环:for循环 - 函数定义和调用

操作CSS样式:element.style.display, element.classList(添加/移除类)

事件处理:onmouseover, onmouseout, onclick

变量作用域:全局变量和局部变量

2.JavaScript功能解析

(1)初始化变量

var index = 0;
var divCon = document.getElementsByClassName("divEle");
var imgEle = document.getElementsByClassName("img-slide");
var divPrev = document.getElementById("prev");
var divNext = document.getElementById("next");
var change1;

作用:存储轮播图状态和控制元素

知识点:

document.getElementsByClassName()获取相同类名的元素集合

document.getElementById()通过ID获取元素

(2)自动轮播功能

change1 = setInterval(autoChangeImg, 3000);function autoChangeImg() {index++;if(index >= imgEle.length) index = 0;changeImg();
}

作用:每3秒自动切换到下一张图片

知识点:

setInterval()定时执行函数

循环逻辑:当到达最后一张时返回第一张

(3)图片切换函数

function changeImg() {for(var i = 0; i < imgEle.length; i++) {imgEle[i].style.display = 'none';divCon[i].classList.remove("active");}imgEle[index].style.display = 'block';divCon[index].classList.add("active");
}

作用:更新显示的图片和页码状态

知识点:

style.display控制元素显示/隐藏

classList操作元素的CSS类

add()和remove()添加/移除类

(4)用户交互功能

// 页码指示器交互
divCon[i].onmouseover = function() {// 切换到对应图片
}// 上一张按钮
divPrev.onclick = function() {// 切换到上一张
}// 下一张按钮
divNext.onclick = function() {// 切换到下一张
}// 悬停暂停功能
divPrev.onmouseover = function() { clearInterval(change1); }
divNext.onmouseover = function() { clearInterval(change1); }
divPrev.onmouseout = function() { change1 = setInterval(autoChangeImg, 3000); }
divNext.onmouseout = function() { change1 = setInterval(autoChangeImg, 3000); }

 作用:实现用户与轮播图的交互

知识点:

onclick点击事件

onmouseover鼠标悬停事件

onmouseout鼠标移出事件

clearInterval()清除定时器

六、核心知识点总结

知识点应用位置作用
HTML结构整个文档构建页面骨架
CSS定位导航按钮、页码精确控制元素位置
CSS过渡按钮透明度、页码状态创建平滑动画效果
JavaScript DOM操作图片切换、页码更新动态改变页面内容
事件处理按钮点击、鼠标悬停响应用户交互
定时器自动轮播实现自动切换功能
循环控制图片切换逻辑实现循环播放

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

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

相关文章

电机试验平台的用途及实验范围

电机试验平台是一种专门设计用来对各种类型的电机进行测试和分析的设备。在现代工业中&#xff0c;电机作为驱动力的重要组成部分&#xff0c;在各个领域发挥着至关重要的作用。而为了确保电机的性能、效率和可靠性达到最佳水平&#xff0c;需要进行各种试验和测试。电机试验平…

自主/智能的本质内涵及其相互关系

论文地址&#xff1a;无人机的自主与智能控制 - 中国知网 (cnki.net) 自主/智能的本质内涵及其相互关系准则是无人机设计的基本原则。从一般意义上讲。自主与智能是两个不同范畴的概念。自主表达的是行为方式&#xff0c;由自身决策完成某行为则称之为“自主”。“智能”…

nignx+Tomcat+NFS负载均衡加共享储存服务脚本

本次使有4台主机&#xff0c;系统均为centos7&#xff0c;1台nignx&#xff0c;2台tomcat&#xff0c;1台nfs 第一台配置nignx脚本 #!/bin/bash #xiexianghu 2025.6.24 #nignx配置脚本&#xff0c;centos7#关闭防火墙和SElinux systemctl stop firewalld && system…

zabbix监控Centos 服务器

1.2&#xff1a;本地安装 先使用wget下载RPM安装包 然后解压安装 >>wget https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-agent2-6.4.21-release1.el8.x86_64.rpm ##### CENTOS 8 使用这一条>>rpm -ivh zabbix-agent2-6.4.21-release1.el8.x86_64.r…

中科米堆三维扫描仪3D扫描压力阀抄数设计

三维扫描技术正以数字化手段重塑传统制造流程。以压力阀这类精密流体控制元件为例&#xff0c;其内部流道结构的几何精度直接影响设备运行稳定性与使用寿命。 在传统设计模式下&#xff0c;压力阀的逆向工程需经历手工测绘、二维图纸绘制、三维建模转换等多个环节。技术人员需…

Python pytz 时区使用举例

Python pytz 时区使用举例 ⏰ 一、Python代码实现&#xff1a;时区转换与时间比较 import pytz from datetime import datetime# 1. 获取当前UTC时间 utc_now datetime.now(pytz.utc)# 2. 转换为目标时区&#xff08;示例&#xff1a;上海和纽约&#xff09; shanghai_tz py…

vue中ref()和reactive()区别

好的&#xff0c;这是 Vue 3 中 ref() 和 reactive() 这两个核心响应式 API 之间区别的详细解释。 简单来说&#xff0c;它们是创建响应式数据的两种方式&#xff0c;主要区别在于处理的数据类型和访问数据的方式。 核心区别速查表 特性ref()reactive()适用类型✅ 任何类型 …

目标检测数据集——交通信号灯红绿灯检测数据集

在智能交通系统迅速发展的背景下&#xff0c;准确且实时地识别交通信号灯的状态对于提升道路安全和优化交通流量管理至关重要。 无论是自动驾驶汽车还是辅助驾驶技术&#xff0c;可靠地检测并理解交通信号灯的指示——特别是红灯与绿灯的区别——是确保交通安全、避免交通事故…

哪款即时通讯服务稳定性靠谱?18家对比

本文将深入对比18家 IM 服务商&#xff1a;1.网易云信; 2. 有度即时通; 3. 环信; 4. 小天互连; 5. 企达即时通讯; 6. 敏信即时通讯; 7. 360织语; 8. 容联云通讯; 9. 云之讯 UCPaaS等。 在如今的数字化时代&#xff0c;即时通讯&#xff08;IM&#xff09;软件已经成为企业日常运…

【Android】Flow学习及使用

目录 前言基础基本用法概念与核心特点Android中使用与LiveData对比热流StateFlow、SharedFlow 搜索输入流实现实时搜索 前言 ​ Flow是kotlin协程库中的一个重要组成部分&#xff0c;它可以按顺序发送多个值&#xff0c;用于对异步数据流进行处理。所谓异步数据流就是连续的异…

idea常做的配置改动和常用插件

IDEA 使用 最强教程&#xff0c;不多不杂。基于idea旗舰版 2019.2.3左右的版本&#xff0c;大多数是windows的&#xff0c;少数是mac版的 一、必改配置 1、ctrl滚轮 调整字体大小 全局立即生效&#xff1a;settings -> Editor -> General -> Change font size with …

3. 物理信息神经网络(PINNs)和偏微分方程(PDE),用物理定律约束神经网络

导言&#xff1a;超越时间&#xff0c;拥抱空间 在前两篇章中&#xff0c;我们已经走过了漫长而深刻的旅程。我们学会了用常微分方程&#xff08;ODE&#xff09;来描述事物如何随时间演化&#xff0c;从一个初始状态出发&#xff0c;描绘出一条独一无二的生命轨迹。我们还学会…

Flutter基础(基础概念和方法)

概念比喻StatefulWidget会变魔术的电视机State电视机的小脑袋&#xff08;记信息&#xff09;build 方法电视机变身显示新画面setState按遥控器按钮改变状态Scaffold电视机的外壳 StatefulWidget&#xff1a;创建一个按钮组件。State&#xff1a;保存点赞数&#xff08;比如 i…

K8s——Pod(1)

目录 基本概念 ‌一、Pod 的原理‌ ‌二、Pod 的特性‌ ‌三、Pod 的意义‌ 状态码详解 ‌一、Pod 核心状态详解‌ ‌二、其他关键状态标识‌ ‌三、状态码运维要点‌ 探针 ‌一、探针的核心原理‌ ‌二、三大探针的特性与作用‌ ‌参数详解‌ ‌三、探针的核心意义…

MySQL 存储过程面试基础知识总结

文章目录 MySQL 存储过程面试基础知识总结一、存储过程基础&#xff08;一&#xff09;概述1.优点2.缺点 &#xff08;二&#xff09;创建与调用1.创建存储过程2.调用存储过程3.查看存储过程4.修改存储过程5.存储过程权限管理 &#xff08;三&#xff09;参数1.输入参数2.输出参…

NLP文本数据增强

文章目录 文本数据增强同义词替换示例Python代码示例 随机插入示例Python代码示例 随机删除示例Python代码示例 回译&#xff08;Back Translation&#xff09;示例Python代码示例 文本生成模型应用方式示例Python代码示例 总结 文本数据增强 数据增强通过对原始数据进行变换、…

(LeetCode 每日一题) 594. 最长和谐子序列 (哈希表)

题目&#xff1a;594. 最长和谐子序列 思路&#xff1a;哈希表&#xff0c;时间复杂度0(n)。 用哈希表mp来记录每个元素值出现的次数&#xff0c;然后枚举所有值x&#xff0c;看其x1是否存在&#xff0c;存在的话就可以维护最长的子序列长度mx。 C版本&#xff1a; class Sol…

FreePDF:让看英文文献像喝水一样简单

前言 第一次看英文文献&#xff0c;遇到不少看不懂的英文单词&#xff0c;一个个查非常费劲。 后来&#xff0c;学会了使用划词翻译&#xff0c;整段整段翻译查看&#xff0c;极大提升看文献效率。 最近&#xff0c;想到了一种更快的看文献的方式&#xff0c;那就是把英文PD…

Scikit-learn:机器学习的「万能工具箱」

——三行代码构建AI模型的全栈指南** ### **一、诞生背景&#xff1a;让机器学习从实验室走向大众** **2010年前的AI困境**&#xff1a; - 学术界模型难以工程化 - 算法实现碎片化&#xff08;MATLAB/C主导&#xff09; - 企业应用门槛极高 > **破局者**&#xff1a;Da…

GPT-1论文阅读:Improving Language Understanding by Generative Pre-Training

这篇论文提出了 GPT (Generative Pre-Training) 模型&#xff0c;这是 GPT系列&#xff08;包括 GPT-2, GPT-3, ChatGPT, GPT-4 等&#xff09;的奠基之作。它标志着自然语言处理领域向大规模无监督预训练任务特定微调范式的重大转变&#xff0c;并取得了显著的成功。 文章链接…