【Web前端】簡易輪播圖顯示(源代碼+解析+知識點)

一、簡易輪播圖源代碼?

<!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;并取得了顯著的成功。 文章鏈接…