制作web幻燈,對很多初學(xué)者來說, 是一件挺難的事情,尤其是剛開始學(xué), 無處下手, 這里制作一個(gè)簡易的幻燈效果,無論是CSS,HTML, JS都盡量做到簡單, 希望能夠給大家起到拋磚引玉的效果
1, css代碼
*{ margin:0; padding:0; } li{ list-style: none; } a{ text-decoration: none; } body{ font-family: '微軟雅黑'; font-size: 14px; } .slide{ width: 230px; height: 90px; margin:50px auto; position:relative; } .slide > ul > li{ display: none; position: relative; height: 90px; } .slide > ul > li:first-child{ display:block; } .slide > ul > li img{ width:230px; height:90px; border-radius: 3px; } .slide > ul > li p{ position:absolute; left:0; bottom:0; height:30px; line-height: 30px; text-align: center; width:210px; padding:0 10px; color:#fff; background-color: rgb(0,0,0,0.1); overflow: hidden; text-overflow:ellipsis; white-space: nowrap; } .slide .toLeft, .slide .toRight{ position:absolute; width:20px; height:40px; text-align:center; line-height:40px; top:25px; color:#fff; background-color: rgb(0,0,0,0.5); cursor: pointer; } .slide .toLeft{ left:0; border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .slide .toRight{ right:0; border-top-left-radius: 3px; border-bottom-left-radius: 3px; } .slide > .dots{ width:100%; position:absolute; height:30px; top:0; left:0; text-align:center; z-index: 2; } .slide > .dots > li{ display:inline-block; height:10px; width:10px; border-radius:50%; background-color:#ccc; margin-right: 6px; } .slide > .dots > li.focus{ background-color:red; }
2, HTML代碼
<div class="slide"> <div class="dots"></div> <ul> <li><a href=""> <img src="./1.jpg"> <p>沉睡花園:龔俊喬欣上演情感專家上演情感專家上演情感專家</p> </a> </li> <li><a href=""> <img src="./2.jpg"> <p>幸福二重奏:殷桃孫藝洲床頭鬧床尾合</p> </a> </li> <li><a href=""> <img src="./3.jpg"> <p>我們的滾燙人生: 陳小春被男孩唱懵</p> </a> </li> </ul> <div class="toLeft" > < </div> <div class="toRight"> > </div> </div>
3. JS代碼:
var now = 0; //表示顯示的第幾個(gè) var time = 0; var t = null; var allLi = document.querySelectorAll(".slide > ul > li"); //得到所有的li var str = ""; for(var i = 0; i < allLi.length; i++){ if(i == 0){ str += "<li class='focus' data-index="+i+"></li>"; } else{ str += "<li data-index="+i+"></li>"; } //任何標(biāo)簽, 除了自帶的屬性外,還可以自定義屬性 } document.querySelector(".slide > .dots").innerHTML = str; var dotsLi = document.querySelectorAll(".slide > .dots > li"); //console.log(allLi); function getFocus(){ for(var i = 0; i < dotsLi.length; i++){ if(i == now){ dotsLi[i].classList.add("focus"); } else{ dotsLi[i].classList.remove("focus"); } } } function toLeft(){ //向左移函數(shù) 如果now > 0, now 減一, 否則設(shè)置為 最大 clearInterval(t); if(now < allLi.length - 1) now++; else now = 0; for(var i = 0; i <= allLi.length - 1; i++){ if(i == now){ allLi[i].style.display = "block"; } else{ allLi[i].style.display = "none"; } } getFocus(); t = setInterval(toLeft,3000); } function toRight(){ clearInterval(t); if(now > 0) now--; else now = allLi.length - 1; for(var i = 0; i <= allLi.length - 1; i++){ if(i == now){ allLi[i].style.display = "block"; } else{ allLi[i].style.display = "none"; } } getFocus(); t = setInterval(toLeft,3000); } //document.querySelector(".toLeft").onclick = toLeft; document.querySelector(".toLeft").addEventListener("click",toLeft); //增加事件監(jiān)聽 document.querySelector(".toRight").addEventListener("click",toRight); dotsLi.forEach((item,index)=>{ item.addEventListener("click",function(){ //單擊的是第幾個(gè),就讓第幾個(gè)圖片顯示,并對應(yīng)獲得焦點(diǎn) var cc = this.getAttribute("data-index"); var cc1 = this.dataset.index; //僅支持 data-的屬性 //得到屬性 now = cc; clearInterval(t); for(var i = 0; i <= allLi.length - 1; i++){ if(i == now){ allLi[i].style.display = "block"; } else{ allLi[i].style.display = "none"; } } getFocus(); t = setInterval(toLeft,3000); }); }) t = setInterval(toLeft,3000);
效果如下:
源代碼下載: