HTMLCSS實現網頁輪播圖

?

網頁中輪播圖區域的實現與解析

在現代網頁設計中,輪播圖是一種常見且實用的元素,能夠在有限的空間內展示多個內容,吸引用戶的注意力。下面將對上述代碼中輪播圖區域的實現方式進行詳細介紹。

一、HTML 結構

<div class="carousel-container"><div class="carousel-wrapper"><div class="carousel-slide"><img src="../png/11430bae6b4173b44543952bb77f24f358e7.jpg" alt=""></div><div class="carousel-slide"><img src="../png/114317272555415270.jpg" alt=""></div><div class="carousel-slide"><img src="../png/11436d56a814d335440688225557ba55ea8d.jpg" alt=""></div><div class="carousel-slide"><img src="../png/114390d3e946f0bf4e95ae287e007efc8d45.jpg" alt=""></div><div class="carousel-slide"><img src="../png/1143a889c2a96a1a4dbdbbba1037a5eac487.jpg" alt=""></div><div class="carousel-slide"><img src="../png/1143daf6b582954042b8801ae2564c19d398.jpg" alt=""></div><!-- 復制第一張圖片實現無縫循環 --><div class="carousel-slide"><img src="../png/1143ea648b5f242f4fe8a399cb5f741366bf.jpg" alt=""></div></div>
</div>
<div class="carousel-indicators"><!-- 靜態指示器內容容器 --><div class="indicator-content"></div><!-- 導航圓點 --><span class="current" data-index="0"></span><span data-index="1"></span><span data-index="2"></span><span data-index="3"></span><span data-index="4"></span><span data-index="5"></span>
</div>
  1. .carousel-container:這是輪播圖的最外層容器,用于包裹整個輪播圖內容。它設置了?position: absolute,通過?top?和?left?屬性確定在頁面中的位置,同時設置了寬度、高度、overflow: hidden?等屬性,確保輪播圖超出容器部分被隱藏。
  2. .carousel-wrapper:該容器用于包含所有的輪播圖幻燈片(.carousel-slide),使用?display: flex?布局,使得幻燈片可以水平排列。通過修改其?transform?屬性來實現幻燈片的滾動切換。
  3. .carousel-slide:每個幻燈片是一個包含圖片的?div?元素,通過設置?min-width: 100%?和?height: 100%?使其填滿輪播圖容器的寬度和高度,圖片通過?object-fit: cover?確保在容器內完整顯示且不失真。
  4. .carousel-indicators:這是輪播圖的指示器容器,包含了用于指示當前幻燈片位置的導航圓點(span?元素)。通過不同的類名(如?current)來表示當前激活的幻燈片。?

二、CSS 樣式

輪播圖的樣式主要通過 CSS 來實現,相關樣式如下:

.carousel-container {position: absolute;z-index: 9;top: -610px;left: -390px;width: 720px;height: 380px;margin: -60px auto 0;overflow: hidden;position: relative;border: 9px solid #fff;
}
.carousel-wrapper {display: flex;width: 100%;height: 100%;transition: transform 0.5s ease;
}
.carousel-slide {min-width: 100%;height: 100%;
}
.carousel-slide img {width: 100%;height: 100%;object-fit: cover;
}
.carousel-indicators {position: absolute;z-index: 100;top: 840px;left: 1100px;transform: translateX(-50%);display: flex;gap: 15px;
}
.carousel-indicators span {width: 70px;height: 15px;background-color: #1f1f1f;border: 2px solid #fff;border-radius: 1px;cursor: pointer;transition: all 0.3s ease;
}
.carousel-indicators span.current {background-color: #ebebeb;transform: scale(1.2);
}
.carousel-indicators span:hover {background-color: rgba(0, 255, 255, 0.7);
}

?

  1. .carousel-container:設置了絕對定位、z-index、尺寸、邊框等樣式,通過?overflow: hidden?隱藏超出容器的幻燈片部分。
  2. .carousel-wrapper:使用?display: flex?布局,并設置了過渡效果(transition),使得幻燈片切換時具有平滑的動畫效果。
  3. .carousel-slide?和?.carousel-slide img:確保幻燈片和其中的圖片能夠正確填充輪播圖容器。
  4. .carousel-indicators:設置了指示器的位置、布局方式(display: flex)以及圓點之間的間距(gap)。
  5. .carousel-indicators span:定義了導航圓點的樣式,包括尺寸、背景顏色、邊框、圓角以及過渡效果。
  6. .carousel-indicators span.current:當某個圓點表示當前幻燈片時,應用不同的樣式(如背景顏色和縮放效果)以突出顯示。
  7. .carousel-indicators span:hover:設置鼠標懸停在圓點上時的樣式變化,增加交互性。

三、JavaScript 交互

通過 JavaScript 代碼實現了輪播圖的自動播放、手動切換以及指示器的更新等功能,相關代碼如下:

?

// 獲取DOM元素
const carouselWrapper = document.querySelector('.carousel-wrapper');
const slides = document.querySelectorAll('.carousel-slide');
const prevBtn = document.querySelector('.qin7');
const nextBtn = document.querySelector('.qin17');
const indicators = document.querySelectorAll('.carousel-indicators span');
const carouselContainer = document.querySelector('.carousel-container');// 初始化變量
let currentIndex = 0;
let timer;// 更新輪播圖位置和指示器
function updateCarousel() {// 更新輪播圖位置carouselWrapper.style.transform = `translateX(${-currentIndex * slides[0].offsetWidth}px)`;// 更新指示器狀態indicators.forEach((indicator, index) => {indicator.classList.toggle('current', index === currentIndex % 6);});
}// 下一張
function nextSlide() {currentIndex++;carouselWrapper.style.transition = 'transform 0.5s ease';// 檢查是否到達最后一張(克隆的第一張)if (currentIndex >= slides.length - 1) {setTimeout(() => {carouselWrapper.style.transition = 'none';currentIndex = 0;updateCarousel();}, 500);}updateCarousel();
}// 上一張
function prevSlide() {currentIndex--;carouselWrapper.style.transition = 'transform 0.5s ease';// 檢查是否到達第一張(克隆的最后一張)if (currentIndex < 0) {setTimeout(() => {carouselWrapper.style.transition = 'none';currentIndex = slides.length - 2;updateCarousel();}, 500);}updateCarousel();
}// 自動輪播
function startAutoPlay() {timer = setInterval(nextSlide, 3000);
}// 停止自動輪播
function stopAutoPlay() {clearInterval(timer);
}// 初始化輪播圖
function initCarousel() {// 綁定事件nextBtn.addEventListener('click', nextSlide);prevBtn.addEventListener('click', prevSlide);indicators.forEach(indicator => {indicator.addEventListener('click', () => {currentIndex = parseInt(indicator.dataset.index);carouselWrapper.style.transition = 'transform 0.5s ease';updateCarousel();});});// 鼠標懸停暫停carouselContainer.addEventListener('mouseenter', stopAutoPlay);carouselContainer.addEventListener('mouseleave', startAutoPlay);// 開始自動輪播startAutoPlay();// 初始化顯示updateCarousel();
}// 頁面加載完成后初始化輪播圖
document.addEventListener('DOMContentLoaded', initCarousel);

?

  1. 獲取 DOM 元素:通過?document.querySelector?和?document.querySelectorAll?獲取輪播圖相關的 DOM 元素,如輪播圖容器、幻燈片、導航按鈕和指示器。
  2. 初始化變量:定義了?currentIndex?用于記錄當前幻燈片的索引,timer?用于存儲自動播放的定時器。
  3. updateCarousel?函數:用于更新輪播圖的位置和指示器的狀態,通過修改?carouselWrapper?的?transform?屬性來移動幻燈片,并根據?currentIndex?更新指示器的樣式。
  4. nextSlide?和?prevSlide?函數:分別實現了切換到下一張和上一張幻燈片的功能,同時處理了無縫循環的邏輯,當到達最后一張或第一張時,通過設置過渡效果和延遲來實現平滑的循環切換。
  5. startAutoPlay?和?stopAutoPlay?函數:用于啟動和停止自動播放,通過?setInterval?和?clearInterval?來控制定時器。
  6. initCarousel?函數:初始化輪播圖的功能,包括綁定導航按鈕和指示器的點擊事件、設置鼠標懸停暫停自動播放的功能,并啟動自動播放和初始化顯示。
  7. 頁面加載完成后初始化:通過?document.addEventListener('DOMContentLoaded', initCarousel);?在頁面加載完成后調用?initCarousel?函數,確保輪播圖能夠正常工作。

?

通過以上 HTML、CSS 和 JavaScript 的結合,實現了一個具有自動播放、手動切換和指示器功能的輪播圖區域,為網頁增添了動態和交互性的展示效果。

效果展示?

?

?

編輯

分享

在代碼中添加輪播圖的指示點

輪播圖區域的代碼中如何實現自動播放?

怎樣在輪播圖區域添加鼠標點擊事件?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78268.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78268.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78268.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux:進程的概念

基本概念 課本概念&#xff1a;程序的一個可執行實例&#xff0c;正在執行的程序。 內核觀點&#xff1a;擔當分配系統資源實體。 當操作系統要執行程序時&#xff0c;也就是說操作系統要執行代碼&#xff0c;但一個操作系統需要執行多個程序&#xff0c;而CPU只有一塊&#xf…

前端基礎之《Vue(10)—過濾器》

一、過濾器 1、作用 用于數據處理。 2、全局過濾器 使用Vue.filter(名稱, val>{return newVal})定義。 在任何組件中都可以直接使用。 3、局部過濾器 使用選項&#xff0c;filters: {}定義&#xff0c;只能在當前組件中使用。 4、過濾器在Vue 3.0中已經淘汰了 5、過濾器…

平板電腦做歐盟網絡安全法案(EU)2022/30

平板電腦做歐盟網絡安全法案&#xff08;EU&#xff09;2022/30 平板電腦做EN18031,平板電腦做無障礙法規EU2019/882 歐盟委員會于2022年通過補充授權法案 &#xff08;EU&#xff09; 2022/30&#xff0c;明確要求無線電設備需滿足網絡安全、隱私保護及反欺詐要求。 新規時間軸…

Unity中打可選擇的AssetBundle,以及URP中加載AssetBundle包Shader丟失問題顯示洋紅色的解決方案

在上一篇打AssetBundle中已經實現了簡單的打AB包和加載,《Unity中打包AssetBundle并加載》,本篇筆記是進一步上一篇最后提出的問題,進行優化。 一、打可選擇的AssetBundle 每次打包都會把設置了AssetBundle名稱和后綴的所有文件都打包,這也是現在網上教學最多的 但是有時…

解決cannot find attribute `serde` in this scope記錄

問題描述&#xff1a; 在Rust中使用serde做json序列化&#xff0c;需要對一個字段指定序列化方法&#xff0c;添加serde注解后報錯: error: cannot find attribute serde in this scope --> src\models\order_model.rs:38:7 | 38 | #[serde(deserialize_with &qu…

基于whisper和ffmpeg語音轉文本小程序

目錄 一、環境準備 ? 第一步&#xff1a;安裝并準備 Conda 環境 ? 第二步&#xff1a;創建 Whisper 專用的 Conda 虛擬環境 ? 第三步&#xff1a;安裝 GPU 加速版 PyTorch&#xff08;適配 RTX 4060&#xff09; ? 第四步&#xff1a;安裝 Whisper 和 FFMPEG 依賴 ?…

Linux GPIO驅動開發實戰:Poll與異步通知雙機制詳解

1. 引言 在嵌入式Linux開發中&#xff0c;GPIO按鍵驅動是最基礎也最典型的案例之一。本文將基于一個支持poll和異步通知雙機制的GPIO驅動框架&#xff0c;深入剖析以下核心內容&#xff1a; GPIO中斷與防抖處理環形緩沖區設計Poll機制實現異步通知(SIGIO)實現應用層交互方式 …

【最新版】西陸健身系統源碼全開源+uniapp前端

一.系統介紹 一款基于UniappThinkPHP開發健身系統&#xff0c;支持多城市、多門店&#xff0c;包含用戶端、教練端、門店端、平臺端四個身份。有團課、私教、訓練營三種課程類型&#xff0c;支持在線排課。私教可以通過上課獲得收益&#xff0c;在線申請提現功能&#xff0c;無…

濟南國網數字化培訓班學習筆記-第二組-6-輸電線路現場教學

輸電線路現場教學 桿塔組裝 角鋼塔 角鋼-連扳-螺栓 螺栓&#xff08;M&#xff09;&#xff1a; 腳釘-螺栓&#xff08;螺栓頭-無扣長-螺紋-螺帽&#xff09;-墊片-螺帽/防盜帽/防松帽M20*45 表示直徑20mm&#xff0c;長度45mm螺栓級別由一個類似浮點數表示&#xff0c;如…

抖音的逆向工程獲取彈幕(websocket和protobuf解析)

目錄 聲明前言第一節 獲取room_id和ttwid值第二節 signture值逆向python 實現signature第三節 Websocket實現長鏈接請求protubuf反序列化pushFrame反序列化Response解壓和反序列化消息體Message解析應答ack參考博客聲明 本文章中所有內容僅供學習交流使用,不用于其他任何目的…

反射,枚舉,lambda表達式

目錄 反射枚舉的使用Lambda表達式函數式接口語法Lambda表達式語法精簡 變量捕獲Lambda在集合List中的使用 反射 作用&#xff1a;在Java代碼中&#xff0c;讓一個對象認識到自己 比如一個類的名字&#xff0c;里面的方法&#xff0c;屬性等 讓程序運行的過程&#xff0c;某個對…

鴻蒙移動應用開發--渲染控制實驗

任務&#xff1a;使用“對象數組”、“ForEach渲染”、“Badge角標組件”、“Grid布局”等相關知識&#xff0c;實現生效抽獎卡案例。如圖1所示&#xff1a; 圖1 生肖抽獎卡實例圖 圖1(a)中有6張生肖卡可以抽獎&#xff0c;每抽中一張&#xff0c;會通過彈層顯示出來&#xf…

webpack基礎使用了解(入口、出口、插件、加載器、優化、別名、打包模式、環境變量、代碼分割等)

目錄 1、webpack簡介2、簡單示例3、入口(entry)和輸出(output)4、自動生成html文件5、打包css代碼6、優化&#xff08;單獨提取css代碼&#xff09;7、優化&#xff08;壓縮過程&#xff09;8、打包less代碼9、打包圖片10、搭建開發環境&#xff08;webpack-dev-server&#xf…

Java快速上手之實驗4(接口回調)

1&#xff0e;編寫接口程序RunTest.java&#xff0c;通過接口回調實現多態性。解釋【代碼4】和【代碼6】的執行結果為何不同&#xff1f; interface Runable{ void run(); } class Cat implements Runable{ public void run(){ System.out.println("貓急上樹.."…

Volcano 實戰快速入門 (一)

一、技術背景 隨著大型語言模型&#xff08;LLM&#xff09;的蓬勃發展&#xff0c;其在 Kubernetes (K8s) 環境下的訓練和推理對資源調度與管理提出了前所未有的挑戰。這些挑戰主要源于 LLM 對計算資源&#xff08;尤其是 GPU&#xff09;的巨大需求、分布式任務固有的復雜依…

Qwen2.5簡要全流程以及QA

1 輸入prompt 得到input id input id&#xff1a; [B,L] # batch size , lenth 2 embeding之后得到 input_embeds: [B,L,D] # demensions 3 進入Transformer層 先通過linear層得到shape不變的 QKV 多頭注意力 分割Dimension &#xff0c; kv變成 [B,H,L,head_dim] h是…

爬蟲學習——Item封裝數據與Item Pipeline處理數據

一、Item封裝數據 對于有字段的數據&#xff0c;最好的數據結構維護方法為字典類型(dict)&#xff0c;但是由于字典不便于攜帶元數據和傳遞給其他組件使用&#xff0c;故可以使用Item類封裝爬取到的數據。 這里涉及兩個類&#xff1a;Item基類和Field類 兩者的使用關系如下&…

【React】狀態管理 Context API \ MobX \ Redux

Context APIMobXRedux React有自己狀態管理&#xff0c;周邊生態也有很多狀態管理 Context API 直接從react中引入并調用即可&#xff0c;context包含兩個東西&#xff1a; Provider&#xff1a;提供商&#xff08;翻譯&#xff09;&#xff0c;提供數據&#xff1b;屬性&…

RK3588上編譯opencv 及基于c++實現圖像的讀入

參考博文&#xff1a; https://blog.csdn.net/qq_47432746/article/details/147203889 一、安裝依賴包 sudo apt install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpe…

MATLAB 訓練CNN模型 yolo v4

學生對小車控制提出了更好的要求&#xff0c;能否加入深度學習模型。 考慮到小車用matlab來做&#xff0c;yolo v5及以上版本都需要在pytorch下訓練&#xff0c;還是用早期版本來演示。 1 yolov4 調用 參考 trainYOLOv4ObjectDetector (mathworks.com) name "tiny-yo…