輪播圖--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張做輪播就是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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM