前端學習(1)-輪播圖
阿新 • • 發佈:2018-12-19
1.背景
寫過一段時間的後臺程式碼,總感覺自己做的介面有些難看。想嘗試著寫一些好看的介面。於是我從基本的css+html+javacript複習起來。嘗試著做一個輪播圖。
2.第一部分
用HTML寫一個主體的框架。首先用ul列表來存放圖片和描述。接著寫一個div用來標識頁碼,最後寫一對按鈕組,實現點選後,進入下一個圖片。
<div class="slideShow"> <ul> <li> <h2 class="active">橋邊落日</h2> <img class="active" src="images/h1.jpg" width="720px" height="540px"> </li> <li> <h2>夕陽美圖</h2> <img src="images/h2.jpg" width="720px" height="540px" > </li> <li> <h2>湖光波瀾</h2> <img src="images/h3.jpg" width="720px" height="540px"> </li> <li> <h2>長河落日</h2> <img src="images/h4.jpg" width="720px" height="540px"> </li> <li> <h2>黃昏</h2> <img src="images/h5.jpg" width="720px" height="540px"> </li> <li> <h2>鬆</h2> <img src="images/h6.jpg" width="720px" height="540px"> </li> </ul> <!-- 頁數 --> <div class="pageNum"> <span class="active" name="0"></span><span name="1"></span><span name="2"></span><span name="3"></span><span name="4"></span><span name="5"></span> </div> <!-- 按鈕組 --> <div class="btn"> <p class="left-btn"></p><!--左按鈕 --> <p class="right-btn"></p><!--右按鈕 --> </div> </div>
3.第二部分
寫css樣式。主要來寫:1.圖片部分。2.圖片描述部分。3.頁碼。4.按鈕組。這些的樣式。其中關鍵的一個樣式是transition,主要用它來實現動畫效果。
<style type="text/css"> *{ margin: 0px; padding: 0px; } /*輪播圖主體*/ .slideShow{ width: 720px; height: 580px; margin: 30px auto; position: relative; overflow: hidden; } /*輪播圖片*/ .slideShow img{ position: absolute; width: 720px; height: 540px; left: 720px; top: 40px; transition: left 0.3s linear; } .slideShow img.active{ left: 0px; } .slideShow img.left{ left: -720px; } /*描述*/ .slideShow h2{ top: 0px; width: 100%; position: absolute; text-align: center; transition: opacity 0.1s linear; opacity: 0; } .slideShow h2.active{ opacity: 1; } /*頁碼*/ .slideShow .pageNum{ position: absolute; bottom: 50px; width: 100%; text-align: center; } .slideShow .pageNum span{ display: inline-block; width: 15px; height: 10px; padding: 3px 0; margin: 0 8px; border-radius: 15px; background: #fff; transition: width 0.3s linear; } .slideShow .pageNum span.active{ width: 20px; background-color:#ff0000 ; } /*左右按鈕組*/ .slideShow .btn{ position: absolute; top: 290px; width: 100%; } .slideShow .btn .left-btn{ position: absolute; display: inline-block; width: 40px; height: 90px; left:0px; background-color: black; opacity: 0.1; transition: opacity 0.3s linear; } .slideShow .btn .right-btn{ position: absolute; display: inline-block; width: 40px; height: 90px; left:680px; background-color: black; opacity: 0.1; transition: opacity 0.3s linear; } .slideShow .btn .left-btn:hover{ filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; } .slideShow .btn .right-btn:hover{ filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; } </style>
4.第三部分。
寫javascript。其中主要用到的事件有 onmouseover:滑鼠移入事件,onmouseout:滑鼠移出事件,onclick滑鼠點選事件。還有定時器。
<script type="text/javascript"> // 輪播函式 function slideShow(){ var slideShow = document.getElementsByClassName("slideShow")[0],//輪播主體 pages = slideShow.getElementsByTagName("span"),//頁碼們 descripes = slideShow.getElementsByTagName("h2"),//描述們 imgs = slideShow.getElementsByTagName("img"),//圖片們 leftBtn = slideShow.getElementsByClassName("left-btn")[0],//左按鈕 rightBtn = slideShow.getElementsByClassName("right-btn")[0],//右按鈕 length = imgs.length,//圖片數量 current = 1;//圖片當前的編號、描述的編號、頁碼的編號 //圖片輪播函式 function slideChange(){ for(var i=0;i<length;i++){ if (i==current) { imgs[i].className="active"; pages[i].className="active"; descripes[i].className="active"; }else{ pages[i].className=""; descripes[i].className=""; if (i<current) { imgs[i].className="left"; }else{ imgs[i].className=""; } } } current++; if (current>=length) { current=0; } } //點選按鈕時的圖片輪播函式 function slideChange2(){ for(var i=0;i<length;i++){ if (i==current) { imgs[i].className="active"; pages[i].className="active"; descripes[i].className="active"; }else{ pages[i].className=""; descripes[i].className=""; if (i<current) { imgs[i].className="left"; }else{ imgs[i].className=""; } } } } // 點選左按鈕,圖片變換 leftBtn.onclick = function(){ // console.log("左按鈕:"+current); if (current<=0) { current=length-1; }else{ current--; } slideChange2(); } // 點選右按鈕,圖片變換 rightBtn.onclick = function(){ // console.log("右按鈕:"+current); if (current>=length-1) { current=0; }else{ current++; } slideChange2(); } var slideon = setInterval(slideChange,2000);//設定定時器,每2秒輪播一次函式 slideShow.onmouseover = function(){//滑鼠移入輪播主體,停止輪播 clearInterval(slideon); } slideShow.onmouseout = function(){//滑鼠移出輪播主體,啟動輪播 slideon = setInterval(slideChange,2000); } for(var i=0;i<length;i++){ pages[i].onmouseover = function(){ current = this.getAttribute("name");//當滑鼠指向頁碼時,獲取當前頁面編號 slideChange(); } } } slideShow();//執行輪播函式 </script>