當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
轮播图--JS手写
輪播圖基本每個網站都會有,也有很多的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張做輪播就是4if (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>
?
轉載于:https://www.cnblogs.com/Sea1ee/p/6266987.html
總結
- 上一篇: Mac下关闭Sublime Text 3
- 下一篇: Tomcat安装与环境变量的配置