js+html+css實(shí)現(xiàn)手動(dòng)輪播和自動(dòng)輪播
本文實(shí)例為大家分享了js+html+css實(shí)現(xiàn)手動(dòng)輪播和自動(dòng)輪播的具體代碼,供大家參考,具體內(nèi)容如下
原理:設(shè)置圖片層的總長(zhǎng)=單張圖片長(zhǎng)度*張數(shù);在輪播層中利用overflow只留出一張圖片的顯示; 通過(guò)圖片層的left來(lái)顯示輪播的每一張圖,第一張為0,為了后面的圖片顯示,left的值左移為負(fù)數(shù)。
原理圖
代碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>輪播圖</title> <!-- <script type="text/javascript" src="demo.js"></script> --> </head> <style type="text/css"> *{ margin: 0; padding: 0; } ul{ list-style: none; } a{ text-decoration: none; } #container{ position: relative; width: 500px; height: 260px; margin: 20px auto; overflow: hidden; /*溢出隱藏:只顯示一張圖片*/ } #container .parent{ position: absolute; width: 2500px; /*整個(gè)圖片層長(zhǎng)度:500*5=2500*/ height: 260px; } #container .parent li{ float: left; width: 500px; height: 100%; } #container .parent li img{ width: 100%; height: 100%; } #container .btnLeft, #container .btnRight{ width: 30px; height: 30px; background-color: #9E9E9E; border-radius: 20%; opacity: 80%; position: absolute; /*包含塊為圖片顯示層container*/ top: 0; bottom: 0; margin: auto; font-size: 20px; color: #f40; text-align: center; line-height: 30px; } #container .btnLeft{ left: 10px; } #container .btnRight{ right: 10px; } #container .btnLeft:hover, #container .btnRight:hover{ opacity: 90%; cursor: pointer; } /*蒙層*/ #container .modal{ width: 100%; height: 40px; background: rgba(0,0,0,.3); position: absolute; left: 0; bottom: 0; line-height: 40px; padding: 0 40px; box-sizing: border-box; } #container .modal .title{ float: left; color: #fff; font-size: 12px; } #container .modal .dots{ float: right; position: absolute; bottom: 10px; left: 340px; } #container .modal .dots li{ width: 15px; height: 15px; border-radius: 50%; float: left; /*可以使用行塊盒*/ /*display: inline-block;*/ margin: 0 5px; cursor: pointer; } .clearfix::after{ content: ""; display: block; clear: both; } .on{ background-color: red; } .off{ background-color: gray; } </style> <body> <div id="container"> <ul class="parent" style="left: 0;"> <li><img src="1.jpg"></li> <li><img src="2.jpg"></li> <li><img src="3.jpg"></li> <li><img src="4.jpg"></li> <li><img src="5.jpg"></li> </ul> <div class="btnLeft"><</div> <div class="btnRight">></div> <div class="modal"> <div class="title"> <h2>輪播圖</h2> </div> <div class="dots"> <ul class="clearfix"> <li class="on"></li> <li class="off"></li> <li class="off"></li> <li class="off"></li> <li class="off"></li> </ul> </div> </div> </div> <script type="text/javascript"> var imgShow = document.getElementsByClassName('parent')[0], dotList = document.querySelectorAll('.dots >.clearfix > li'); var btnLeft = document.getElementsByClassName('btnLeft')[0], btnRight = document.getElementsByClassName('btnRight')[0]; var dotLen = dotList.length, index = 0; //輪播層的圖片索引,0表示第一張 //圓點(diǎn)顯示 function showRadius() { for(var i = 0; i < dotLen; i++) { if(dotList[i].className === "on"){ dotList[i].className = "off"; } } dotList[index].className = "on"; } //向左移動(dòng) btnLeft.onclick = function() { index--; if(index < 0){ /*第1張向左時(shí),變?yōu)榈?張*/ index = 4; } showRadius(); var left; var imgLeft = imgShow.style.left; if(imgLeft === "0px") { /*當(dāng)是第1張時(shí),每張圖片左移,移4張圖,位置為-(4*500)*/ left = -2000; } else{ left = parseInt(imgLeft) + 500; /*由于left為負(fù)數(shù),每左移一張加500*/ } imgShow.style.left = left + "px"; } //向右移動(dòng) btnRight.onclick = function() { index++; if(index > 4){ /*第5張向右時(shí),變?yōu)榈?張*/ index = 0; } showRadius(); var right; var imgLeft = imgShow.style.left; if(imgLeft === "-2000px") { /*當(dāng)是第5張時(shí),第1張的位置為0*/ right = 0; } else{ right = parseInt(imgLeft) - 500; /*由于left為負(fù)數(shù),每右移一張減500*/ } imgShow.style.left = right + "px"; } // 自動(dòng)輪播 /*var timer; function autoPlay() { timer = setInterval(function() { var right; var imgLeft = imgShow.style.left; if(imgLeft === "-2000px") { right = 0; } else{ right = parseInt(imgLeft) - 500; } imgShow.style.left = right + "px"; } ,1000) } autoPlay();*/ for(var i = 0; i < dotLen; i++) { /*利用閉包傳遞索引*/ (function(i) { dotList[i].onclick = function() { var dis = index - i; //當(dāng)前位置和點(diǎn)擊的距離 imgShow.style.left = (parseInt(imgShow.style.left) + dis * 500) + "px"; index = i; //顯示當(dāng)前位置的圓點(diǎn) showRadius(); } })(i); } </script> </body> </html>
效果:按鈕左右滑動(dòng)圖片,圖片上的小圓點(diǎn)也可以選擇圖片。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js使用DOM設(shè)置單選按鈕、復(fù)選框及下拉菜單的方法
這篇文章主要介紹了js使用DOM設(shè)置單選按鈕、復(fù)選框及下拉菜單的方法,較為詳細(xì)的分析了單選按鈕、復(fù)選框及下拉菜單的具體用法及實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-01-01JavaScript插入動(dòng)態(tài)樣式實(shí)現(xiàn)代碼
能夠把CSS樣式包含到HTML頁(yè)面中的元素有兩個(gè)。其中,<link>元素用于包含來(lái)自外部的文件,而<style>元素用于指定嵌入的樣式2012-02-02javascript獲取元素文本內(nèi)容的通用函數(shù)
獲取元素文本內(nèi)容的通用函數(shù),思路很好值得參考。2009-12-12layui實(shí)現(xiàn)二維碼彈窗、并下載到本地的方法
今天小編就為大家分享一篇layui實(shí)現(xiàn)二維碼彈窗、并下載到本地的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09用jmSlip編寫(xiě)移動(dòng)端頂部日歷選擇控件
這篇文章主要為大家詳細(xì)介紹了利用jmSlip編寫(xiě)移動(dòng)端頂部日歷選擇組件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10javascript利用鍵盤(pán)控制小方塊的移動(dòng)
這篇文章主要為大家詳細(xì)介紹了javascript利用鍵盤(pán)控制小方塊的移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04