js 點擊事件輪播圖的簡單實現
輪播圖在以後的應用中還是比較常見的,不需要多少行程式碼就能實現。但是在只掌握了js基礎的情況下,怎麼來用較少的而且邏輯又簡單的方法來實現呢?以下來分析下幾種不同的做法:
1、利用位移的方法來實現
首先,我們可以在body中添加一個div並且將寬度設置成百分比(自適應頁),比例具體是相對誰的百分比的話依需求來做,這裡不多說。將圖片放入到div 中。
其次,樣式部分將img標籤全部設定成absolute;以方便定位
最後,js部分說說邏輯,定義兩個空數組,第一個數組用來保存初始的顯示在頁面的圖片和等待進入的圖片,第二個陣列保存其餘的n張圖片,假設這兩個數組分別設定為:waitToShow=[]; 和goOut=[]; waitToShow.shift();彈出第一張圖片假如命名為showFirst,並為showFirst圖片設定位移和移動時間,執行完成之後showFirst放入goOut尾部:goOut.push(showFirst); 這時waitToShow數組的第0個元素就變成原來的第二張要顯示的圖片,給這個圖片waitToShow[0]設定位移和移動時間,並且將goOut數組的首元素圖片彈出來,在放進waitToShow數組的尾部,保證waitToShow數組永遠是一張顯示的圖片和待顯示的圖片,這樣就通過兩個陣列形成了一個循環來完成輪播圖的實作。反向的邏輯是一樣的(由於邏輯過於複雜這裡不推薦)
2、利用層級的高低來使最頂部圖片變化的做法(這個做法沒有位移的動作,但是邏輯卻非常簡便,很實用)
直接來程式碼更直觀點:基本每行都有註解
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>轮播图 (闪现 自适应)</title> <style media="screen"> * { margin: 0; padding: 0; } .wrap { width: 60%; background: red; margin: auto; position: relative; } .wrap img { width: 100%; position: absolute; /*z-index: 10;*/ } input { border: 1px solid lightgray; width: 50px; height: 30px; background: red; border-radius: 5px; font-size: 20px; } </style> </head> <body> <div class="wrap"> <img src="img/01.jpg" alt="" /> <img src="img/02.jpg" alt="" /> <img src="img/03.jpg" alt="" /> <img src="img/04.jpg" alt="" /> </div> <input type="button" id="butLeft" name="name" value="◀︎"> <input type="button" id="butRight" name="name" value="▶︎"> </body> <script type="text/javascript"> // 获取images元素生成字符串数组,字符串数组不能进行push pop splice 等操作 // 所以要将它的值重新存放进一个数组中,后面有定义 var images = document.getElementsByTagName('img'); var butLeft = document.getElementById('butLeft'); var butRight = document.getElementById('butRight'); //获取变量index 用来为后面设置层级用 var index = 1000; // 获取一个空的数组,用来存放images里面的字符串元素 var imagess = []; // for循环用来给imagess数组赋值,并且改变数组中的元素的层级 for (var i = 0; i < images.length; i++) { imagess[i] = images[i]; var currentImage = imagess[i]; // 当前图片的层级的设置,一轮for循环都为他们设置了初始的zIndex,图片越靠前,层级设置 // 要求越高,所以用的是-i,这样图片会按顺序从第一张,第二张.....依次向下 currentImage.style.zIndex = -i; } // 设置计数器count,执行一次点击事件(向左或者向右)count加1 var count = 0; // 向左的点击事件 butLeft.onclick = function() { // 从数组头部弹出一个图片元素 var showFirst = imagess.shift(); // 给弹出的这个图片元素设置层级,即 -1000+count, // 让层级相较其他元素是最小的,数组头部弹出的图片会显示在最底层 showFirst.style.zIndex = - index + count; // 层级改变完成后再将他push进数组的尾部 imagess.push(showFirst); // 点击一次加1,不用考虑具体的值,只需要有点击事件加 1 count++; } // 向右点击事件 butRight.onclick = function() { // 从imagess的尾部弹出一个元素,并赋值给showFirst var showFirst = imagess.pop(); // 设置showFirst的层级为最大,1000+count ,这样他会显示在第一层 showFirst.style.zIndex = index + count; // 层级改变之后将他在插入数组imagess的头部 imagess.unshift(showFirst); // 点击一次加1 count++; } </script> </html>
以上這篇js 基礎篇必看(點擊事件輪播圖的簡單實現)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援PHP中文網。
更多js 點擊事件輪播圖的簡單實作相關文章請關注PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。
