1. 程式人生 > 其它 >HTML+CSS+Javascript實現輪播圖效果

HTML+CSS+Javascript實現輪播圖效果

HTML+CSS+Javascript實現輪播圖效果

注意:根據自己圖片大小來更改輪播圖大小。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
* {
	margin: 0;
	padding: 0;
}
/*去掉ul、ol、li源有的樣式*/
ul, ol, li {
	list-style: none;
}
/*設定圖片樣式為*/
img {
	width: 100%;
	height: 100%;
	display: block;    /*圖片可見*/
}
/*設定最大div的樣式*/
.banner {
	width: 50%;
	height: 60%;
	position: absolute;
	margin: 50px 0;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
}
/*設定ul的樣式對齊方式為相對對齊*/
.banner>ul {
	width: 100%;
	height: 100%;
	position: relative;
}
/*設定裝圖片的li樣式*/
.banner>ul>li {
	width: 100%;
	height: 100%;
	position: absolute;   /* 絕對對齊*/
	left: 0;
	top: 0;
	opacity: 0;     /*完全透明*/
	transition: opcity .5s linear;    /* 平滑過渡*/
}
/*當用戶點選後釋放滑鼠後圖片的li生效*/
.banner > ul > li.active {
	opacity: 1; /* 完全不透明*/
}
/*下方呈現的小按鈕外圍樣式*/
.banner > ol {
	width: 200px;
	height: 60px;
	position: absolute;   /*絕對定位*/
	left: 50%;
	bottom: 50px;
	background-color: coral;
	opacity: 0.4;
	transform: translateX(-50%);      /*左邊距減去自身的一半*/
	display: flex;                     /*水平排列*/
	justify-content: space-around;      /*水平兩端對齊*/
	align-items: center;                /*垂直居中對齊 */
	border-radius: 80px;   /*圓角*/
}
/*下方小圓按鈕的樣式*/
.banner > ol > li {
	width: 20px;
	height: 20px;
	background-color: aliceblue;
	border-radius: 50%;    /*圓角50%*/
	cursor: pointer;	 /*滑鼠移動到此處變成小手*/
}
/*點選小按鈕後釋放滑鼠後li生效*/
.banner > ol > li.active {
	background-color: limegreen;
}
/*左右按鈕*/
	
.banner>div {
	width: 100px;
	height: 150px;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);   /*上邊距減去自身高度的一半*/
	background-color: black;
	opacity: 0.4;               /* 透明度0.4*/
	display: flex;               /*擺脫文件流限制,相對定位*/
	justify-content: center;     /*內部元素和內容垂直居中*/
	align-items: center;         /*內部元素和內容水平居中*/
	font-size: 90px;             /*字型大小*/
	color: aliceblue;
}
/*左邊按鈕樣式*/
.banner>div.left {
	left: 0;  /* 左對齊*/
	cursor: pointer;	 /*滑鼠移動到此處變成小手*/
}
/*右邊按鈕樣式*/
.banner>div.right {
	right: 0;               /* 右對齊*/
	cursor: pointer;	 /*滑鼠移動到此處變成小手*/
}
</style>
</head>
<body>
<div class="banner">
  <ul class="imgBox">
    <li class="active"><img src="img/1.jpg" alt=""></li>
    <li><img src="img/2.jpg"  alt=""></li>
    <li><img src="img/3.jpg"  alt=""></li>
    <li><img src="img/4.jpg"  alt=""></li>
  </ul>
  <ol><!--自定義屬性                自定義屬性-->
    <li data-i="0" class="active" data-c="pas"></li>
    <li data-i="1" data-c="pas"></li>
    <li data-i="2" data-c="pas"></li>
    <li data-i="3" data-c="pas"></li>
  </ol>            
  <div class="left">&lt;</div>   <!--&lt;代表"<"-->
  <div class="right">&gt;</div>  <!--&lt;代表">"-->
</div>
<script type="text/javascript">
		//獲取所有圖片的li和所有焦點的li
	var imgs=document.querySelectorAll("ul > li")
	var point=document.querySelectorAll("ol > li")
	//獲取最大div的元素
	var banner=document.querySelector(".banner")
	
	//index表示第幾張圖片預設第0張顯示
	 var index=0	
	
	 //隱藏當前這種圖片,顯示第index張圖片方法
	    //true表示切換到下一張圖片
	     //false表示切換到上一張圖片
	function changeOne(type){
		//隱藏第index張圖片
		imgs[index].className=''
		//隱藏第index個按鈕高亮(綠色)
		point[index].className=''
		
		//判斷傳過來的值是否是true,是就切換下一張圖片
		if(type===true){
		index++	 
			
       }else if(type===false){   //判斷傳過來的值是否是false,是就切換上一張圖片
		   index--
	   }else{        //都不是說明點選是小圓點,就切換到type張圖片
		   index=type         
	   }
		
		//判斷index有沒有越界,越了就從頭開始或者從最後開始
		if(index>=imgs.length){
			index=0
		}
		if(index<0){
            index=imgs.length-1	
		 }
		
	 //為index張圖片設定active屬性
		//圖片是透明度設定不透明,
	 imgs[index].className="active"  
		 //小圓點是設定高亮
	 point[index].className="active"
		
	}
		
		//單擊判斷呼叫changeOne(type)方法
		
	    banner.onclick=function(e){
			
		 //判斷點選的是否是點選了左邊的按鈕
		if(e.target.className==="left"){
			changeOne(false)//如果是就呼叫方法,並傳參false
		}
			
		 //判斷點選的是否是點選了右邊的按鈕
		if(e.target.className==="right"){
			changeOne(true)  //如果是就呼叫方法,並傳參true
		}
		//判斷是否點選了小按鈕(自定義屬性判斷,可以去看小圓點li裡的(data-c))
		if(e.target.dataset.c==="pas"){
			//如果是再次通過自定義屬性判斷點選的哪一個小圓點,並把值傳過去
			var i=e.target.dataset.i-0
			changeOne(i)
           }			
	  }
	
	//自動切換下一張圖片方法
	  setInterval(function(){
	  changeOne(true)
	},5000)
		
	</script>
</body>
</html>

本文來自部落格園,作者:永恆之月TEL,轉載請註明原文連結:https://www.cnblogs.com/akc4/p/15818718.html