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

JavaScript图片轮播

代码在文章最后面(含图片URL)

实现功能

  1. 按向左按钮图片显示上一张
  2. 按向右按钮图片显示下一张
  3. 每隔2000毫秒显示下一张图
  4. 底部三个圆点显示当前的图片的编号

实现流程

  1. 初始化图片数组 创建一个包含图片URL的数组,轮播时会通过这个数组来切换图片。
  2. 创建当前索引变量 这个变量用来追踪当前显示的图片索引。
  3. 创建自动轮播图片函数 该函数负责更改轮播图中显示的图片,并根据当前索引更新指示器的状态。
  4. 创建指示器的函数 此函数在HTML中创建了与图片数量相同的指示器元素,并为第一个指示器添加了active-indicator类,以表示它是活动的。
  5. 下一张图片按钮 当用户点击“下一张”按钮时,这个函数会被触发。它将currentIndex加一,如果索引等于图片数组长度,则将索引重置为0,然后调用showImage函数来更新图片和指示器。
  6. 上一张图片按钮 当用户点击“上一张”按钮时,这个函数会被触发。它将currentIndex减一,如果索引小于0,则将索引设置为图片数组的最后一个元素的索引,然后调用showImage函数来更新图片和指示器。
  7. 创建事件监听器 将这些监听器绑定到“下一张”和“上一张”按钮上,当按钮被点击时,它们会调用相应的函数。
  8. 启动自动轮播 设置了一个定时器,每隔2000毫秒(2秒)调用一次nextImage函数,从而实现图片的自动轮播。

ONGD:通过操作DOM元素,用CSS类来控制显示的图片和当前图片指示器的状态,实现了图片轮播。

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simple Carousel</title>
<style>body {display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;background-color: #f0f0f0;}.carousel {position: relative;width: 300px;height: 200px;border-radius: 8px;overflow: hidden;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);}.carousel img {width: 100%;height: auto;}.controls {position: absolute;top: 50%;transform: translateY(-50%);width: 100%;display: flex;justify-content: space-between;padding: 0 10px;}.control-button {background-color: white;color: #333;font-size: 20px;width: 30px;height: 30px;border-radius: 50%;display: flex;justify-content: center;align-items: center;cursor: pointer;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);}.indicator-container {position: absolute;bottom: 10px;left: 50%;transform: translateX(-50%);display: flex;}.indicator {background-color: #ccc;width: 10px;height: 10px;border-radius: 50%;margin: 0 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);}.active-indicator {background-color: black;}
</style>
</head>
<body>
<div class="carousel"><img src="" alt="Image" id="carousel-image"><div class="controls"><button class="control-button" id="prev-btn">👈</button><button class="control-button" id="next-btn">👉</button></div><div class="indicator-container" id="indicators"></div>
</div><script>const images = ['https://q9.itc.cn/q_70/images03/20240715/8319afaf350346a08a4d51b65638e39d.png','https://n.sinaimg.cn/sinacn20191106ac/42/w500h342/20191106/6b91-ihyxcrp9562392.jpg','https://n.sinaimg.cn/news/transform/20170412/D-Ac-fyecfam0465124.jpg'];let currentIndex = 0;function showImage(index) {document.getElementById('carousel-image').src = images[index];const indicators = document.getElementById('indicators').children;for (let i = 0; i < indicators.length; i++) {indicators[i].classList.remove('active-indicator');}indicators[index].classList.add('active-indicator');}function createIndicators() {const indicatorContainer = document.getElementById('indicators');for (let i = 0; i < images.length; i++) {const indicator = document.createElement('div');indicator.classList.add('indicator');if (i === 0) {indicator.classList.add('active-indicator');}indicatorContainer.appendChild(indicator);}}function nextImage() {currentIndex++;if (currentIndex >= images.length) {currentIndex = 0;}showImage(currentIndex);}function prevImage() {currentIndex--;if (currentIndex < 0) {currentIndex = images.length - 1;}showImage(currentIndex);}document.getElementById('next-btn').addEventListener('click', nextImage);document.getElementById('prev-btn').addEventListener('click', prevImage);// Auto-play functionalitysetInterval(nextImage, 2000);createIndicators();showImage(currentIndex);
</script>
</body>
</html>

 

 

 

http://www.lryc.cn/news/408390.html

相关文章:

  • MSSQL注入前置知识
  • idea一键为实体类赋值
  • 秋招突击——7/24——知识补充——JVM类加载机制
  • 如何在 Microsoft SQL Server 中增加字段-完整指南
  • 快手电商Android一面凉经(2024)
  • 随机点名器
  • 添加动态云层
  • Spring Boot组成的分布式系统中实现日志跟踪
  • GPT-4o Mini 模型的性能与成本优势全解析
  • web前端 - HTML 基础知识大揭秘
  • HTML meta
  • 【学习笔记】子集DP
  • 苦学Opencv的第十四天:人脸检测和人脸识别
  • PyTorch学习(1)
  • 三思而后行:计算机行业的决策智慧
  • Linux--Socket编程UDP
  • 《javaEE篇》--单例模式详解
  • Java核心 - Lambda表达式详解与应用示例
  • 算法通关:006_1二分查找
  • 总结一些vue3小知识3
  • JAVAWeb实战(前端篇)
  • axios请求大全
  • C# 简单的单元测试
  • Linux中Mysql5.7主从架构(一主多从)配置教程
  • BACnet物联网关BL103:Modbus协议转BACnet/MSTP
  • Go 语言条件变量 Cond
  • PostgreSQL 中如何重置序列值:将自增 ID 设定为特定值开始
  • Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示
  • Go语言的数据结构
  • python_在sqlite中创建表并写入表头