js+html+css實(shí)現(xiàn)手動(dòng)輪播和自動(dòng)輪播
本文實(shí)例為大家分享了js+html+css實(shí)現(xiàn)手動(dòng)輪播和自動(dòng)輪播的具體代碼,供大家參考,具體內(nèi)容如下
原理:設(shè)置圖片層的總長=單張圖片長度*張數(shù);在輪播層中利用overflow只留出一張圖片的顯示; 通過圖片層的left來顯示輪播的每一張圖,第一張為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è)圖片層長度: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)也可以選擇圖片。


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript實(shí)現(xiàn)檢查頁面上的廣告是否被AdBlock屏蔽了的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)檢查頁面上的廣告是否被AdBlock屏蔽了的方法,其實(shí)就是利用JS檢測div的名稱和樣式名稱實(shí)現(xiàn),需要的朋友可以參考下2014-11-11
探索export導(dǎo)出一個(gè)字面量會(huì)報(bào)錯(cuò)export?default不會(huì)報(bào)錯(cuò)
這篇文章主要為大家介紹了export導(dǎo)出一個(gè)字面量會(huì)報(bào)錯(cuò)而export?default不會(huì)報(bào)錯(cuò)的問題探索解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
js實(shí)現(xiàn)時(shí)分秒倒計(jì)時(shí)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)時(shí)分秒倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
JS實(shí)現(xiàn)根據(jù)密碼長度顯示安全條功能
這篇文章主要介紹了基于JS實(shí)現(xiàn)根據(jù)密碼長度顯示安全條功能,非常不錯(cuò),在一些網(wǎng)站上經(jīng)常會(huì)遇到此功能,需要的的朋友參考下實(shí)現(xiàn)代碼吧2017-03-03

