輪播圖基本每個網站都會有,也有很多的JQuery插件可以用,這里是用JS代碼寫的。
案例:http://www.shopli.cn 首頁三張圖片的輪換就是這種寫法
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Test</title> <script src="~/Scripts/jquery-1.8.2.min.js"></script> @*Css樣式*@ <style> * { margin: 0; padding: 0; } ul { height: 600px; position: relative; } ul li { float: left; list-style-type: none; height: 100%; background-position: 50% 50%; background-size: cover; } .one { background-image: url("/Content/1.jpg"); } .two { background-image: url("/Content/2.jpg"); } .three { background-image: url("/Content/3.jpg"); } .four { background-image: url("/Content/4.png"); } .dw { position: absolute; bottom: 5px; width: 100%; text-align: center; } ol { list-style: none; text-align: center; } ol li { display: inline-block; width: 22px; height: 4px; padding: 4px; overflow: hidden; text-indent: -999em; cursor: pointer; background-color: white; } .hasClass { background-color: red; } </style> </head> <body> <div style="position: relative; overflow: hidden; height: 600px;"> @*有多少個li,ul的寬度就是 X00%*@ <ul style="width:600%; margin-left:-100%;"> @*第一張前面放最后一張,做輪播給人一種一直往一個方向的感覺*@
當顯示這張圖片時,ul就改變樣式定位到第4張圖片 <li class="four" style="width:16.6667%"></li> @*這里的li標簽寬度是16.66667%怎么來的, 只有4張圖片做輪播,前后各加一張就是6張, 16.666667=100/6 如果是2張做輪播,一共4個li, 每個li的寬度就是25%*@ @*這4張圖片做輪播*@ <li class="one" style="width:16.6667%"></li> <li class="two" style="width:16.6667%"></li> <li class="three" style="width:16.6667%"></li> <li class="four" style="width:16.6667%"></li> @*最后一張后面放第一張,做輪播給人一種一直往一個方向的感覺*@
當顯示這張圖片時,ul改變樣式定位到第1張圖片 <li class="one" style="width:16.6667%"></li> </ul> <nav class="dw"> <ol > <li data-slide="0" class="hasClass"></li> <li data-slide="1" class=""></li> <li data-slide="2" class=""></li> <li data-slide="3" class=""></li> </ol> </nav> </div> </body> </html> <script> var mm; function hh() { //ul li做向左移動 $("ul").animate({ "left": "+=" + "-100%" }, 1200, function () { var i;//得到第幾張的值 $("ol li").each(function () { if ($(this).attr("class") != "") { i = $(this).attr("data-slide"); } }); //因為是做過一次動畫才來找值,所有當i為3時,ul是的left是 -400%,也就是第5張圖片 i = parseInt(i) + 1; //如果等於4 就重置下, 這里有4張做輪播就是4 if (parseInt(i) == 4) { i = 0; $("ul").css("left", "0%"); //重新定位下,ul的left已經重置了,因為圖片沒變,所以給人一個方向的假象 } $("ol li").attr("class", ""); //把所有的li的樣式移除 $("ol li:eq(" + parseInt(i) + ")").attr("class", "hasClass"); //下面的圖標顯示 }) mm = setTimeout("hh()", 4000); //每個4秒做一次動畫 } $(document).ready(function () { mm = setTimeout("hh()", 4000); //點第幾張就顯示幾張 左右也是一回事,這里沒寫 $("ol").on("click", "li", function () { var jj = $(this).attr("data-slide"); //點的第幾張 $("ol li").attr("class", ""); $("ol li:eq(" + parseInt(jj) + ")").attr("class", "hasClass"); //下面的圖標顯示 clearTimeout(mm); $("ul").animate({ "left": "-" + parseInt(jj) + "00%" }, 1200, function () { mm = setTimeout("hh()", 4000); }); //重新定位下 }) }) </script>