通過javascript實現圖片輪播效果

以下文案均爲原創,若借鑑後有得到啓發,希望點個贊。若有錯誤之處,或者可以用更好的方式解決,可以留言評論。

 

以下方法均實現圖片輪播的效果,層層遞進關係。

第一種方式:

在js裏通過索引的方式實現。

①先設置圖片的名稱,分別從t1.jpg到t7.jpg(共8張圖片)

②設置索引爲0,若索引能被8整除,則令索引爲0。實現重複更換圖片的效果

③使用document.getElementById(),通過指定的Id來獲得html對象

④通過對象.src屬性得到圖片的URL

⑤最後通過setInterval按照指定的週期(2s)來調用函數,實現圖片輪播效果。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圖片滾動效果</title>
</head>
    <style type="text/css">
        #adv {
            width: 590px;
            height: 470px;
        }

    </style>
    <script type="text/javascript">
        index = 0;
        function rollImage() {
            index++;
            if (index%8===0) {
                index = 0;
            }
            adv = document.getElementById("adv");
            adv.src ='../image/t' + index + '.jpg'
        }
        setInterval(rollImage,2000)
    </script>
<body>
    <img id="adv" src="../image/t0.jpg">
</body>
</html>

 

第二種方式:

在第一種方式的前提下,又實現了圓圈點中會選中對應的圖片以及點擊左右兩邊的圖標實現圖片的切換。

(1) 實現圓圈點中會選中對應的圖片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圖片滾動效果</title>
    <style type="text/css">
        #adv {
            width: 590px;
            height: 470px;
            background-image: url("../image/t1.jpg");
        }
        #nav {
            width: 400px;
            height: 20px;
            /*border: 1px solid black;*/
            list-style-type: none;
            margin-top: 190px;
            line-height: 20px;
        }
        #nav li {
            width: 10px;
            height: 10px;
            float: left;
            border-radius: 50%;
            border: 2px solid red;
            margin: 5px 7px;
        }
    </style>
    <script type="text/javascript">
        index = 0;
        function rollImage() {
            index++;
            if (index%8===0) {
                index = 0;
            }
            adv = document.getElementById("adv");
            adv.style.backgroundImage = "url('../image/t"+index+".jpg')";
            changeBg(index);
        }
        function changeIndex(i) {
            clearInterval(inter);
            index = i;
            adv = document.getElementById("adv");
            adv.style.backgroundImage = "url('../image/t"+index+".jpg')";
            changeBg(index);
        }
        function changeBg(index) {
            nav = document.getElementById("nav");
            lis = nav.children;
            for (i=0; i<lis.length; i++) {
                lis[i].style.background = "hsla(0,0%,100%,.2)";
            }
            lis[index].style.background = "red";
        }
        function roll() {
            inter = setInterval(rollImage,2000);
        }
        var inter = setInterval(rollImage,2000);
    </script>
</head>
<body>
    <div id="adv">&nbsp;
        </ul>
        <ul id="nav">
            <li onmouseover="changeIndex(0)" onmouseout="roll()" style="background:red"></li>
            <li onmouseover="changeIndex(1)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(2)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(3)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(4)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(5)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(6)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(7)" onmouseout="roll()"></li>
        </ul>
    </div>
</body>
</html>

 

(2) 點擊左右兩邊的圖標實現圖片的切換

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圖片滾動效果</title>
    <style type="text/css">
        #btn {
            padding: 0;
            margin: 180px 0 0 0;
            width: 590px;
            height: 40px;
            /*border: 1px solid blue;*/
            list-style-type: none;

        }
        #btn li {
            width: 20px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            /*border: 1px solid black;*/
            color: #ccc;
            background-color: hsla(0, 0%, 100%, .2);
        }
        .left {
            float: left;
        }
        .right {
            float: right;
        }
    </style>
    <script type="text/javascript">
        index = 0;
        function changeBg(index) {
            nav = document.getElementById("nav");
            lis = nav.children;
            for (i=0; i<lis.length; i++) {
                lis[i].style.background = "hsla(0,0%,100%,.2)";
            }
            lis[index].style.background = "red";
        }
        function changeImage(flag) {
            clearInterval(inter);
            if (flag==="l") {
                index--;
            }else {
                index++;
            }
            if (index===-1) {index=7;}
            if (index===8) {index=0;}
            adv =document.getElementById("adv");
            adv.style.backgroundImage = "url('../image/t"+index+".jpg')";
            changeBg(index);
        }
        function changeBtnbg(obj) {
            obj.style.background = "hsla(0, 0%, 100%, .8)";
        }
        function rollBtn(obj) {
            obj.style.background = "hsla(0, 0%, 100%, .2)";
        }
        var inter = setInterval(rollImage,2000);
    </script>
</head>
<body>
    <div id="adv">&nbsp;
        <ul id="btn">
            <li class="left" onclick="changeImage('l')" onmouseover="changeBtnbg(this)" onmouseout="rollBtn(this)">&lt;</li>
            <li class="right" onclick="changeImage('r')" onmouseover="changeBtnbg(this)" onmouseout="rollBtn(this)">&gt;</li>
        </ul>
    </div>
</body>
</html>

 

(3)兩者結合實現的代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圖片滾動效果</title>
    <style type="text/css">
        #adv {
            width: 590px;
            height: 470px;
            background-image: url("../image/t1.jpg");
        }
        #nav {
            width: 400px;
            height: 20px;
            /*border: 1px solid black;*/
            list-style-type: none;
            margin-top: 190px;
            line-height: 20px;
        }
        #nav li {
            width: 10px;
            height: 10px;
            float: left;
            border-radius: 50%;
            border: 2px solid red;
            margin: 5px 7px;
        }
        #btn {
            padding: 0;
            margin: 180px 0 0 0;
            width: 590px;
            height: 40px;
            /*border: 1px solid blue;*/
            list-style-type: none;

        }
        #btn li {
            width: 20px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            /*border: 1px solid black;*/
            color: #ccc;
            background-color: hsla(0, 0%, 100%, .2);
        }
        .left {
            float: left;
        }
        .right {
            float: right;
        }
    </style>
    <script type="text/javascript">
        index = 0;
        function rollImage() {
            index++;
            if (index%8===0) {
                index = 0;
            }
            adv = document.getElementById("adv");
            adv.style.backgroundImage = "url('../image/t"+index+".jpg')";
            changeBg(index);
        }
        function changeIndex(i) {
            clearInterval(inter);
            index = i;
            adv = document.getElementById("adv");
            adv.style.backgroundImage = "url('../image/t"+index+".jpg')";
            changeBg(index);
        }
        function changeBg(index) {
            nav = document.getElementById("nav");
            lis = nav.children;
            for (i=0; i<lis.length; i++) {
                lis[i].style.background = "hsla(0,0%,100%,.2)";
            }
            lis[index].style.background = "red";
        }
        function changeImage(flag) {
            clearInterval(inter);
            if (flag==="l") {
                index--;
            }else {
                index++;
            }
            if (index===-1) {index=7;}
            if (index===8) {index=0;}
            adv =document.getElementById("adv");
            adv.style.backgroundImage = "url('../image/t"+index+".jpg')";
            changeBg(index);
        }
        function roll() {
            inter = setInterval(rollImage,2000);
        }
        function changeBtnbg(obj) {
            obj.style.background = "hsla(0, 0%, 100%, .8)";
        }
        function rollBtn(obj) {
            obj.style.background = "hsla(0, 0%, 100%, .2)";
        }
        var inter = setInterval(rollImage,2000);
    </script>
</head>
<body>
    <div id="adv">&nbsp;
        <ul id="btn">
            <li class="left" onclick="changeImage('l')" onmouseover="changeBtnbg(this)" onmouseout="rollBtn(this)">&lt;</li>
            <li class="right" onclick="changeImage('r')" onmouseover="changeBtnbg(this)" onmouseout="rollBtn(this)">&gt;</li>
        </ul>
        <ul id="nav">
            <li onmouseover="changeIndex(0)" onmouseout="roll()" style="background:red"></li>
            <li onmouseover="changeIndex(1)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(2)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(3)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(4)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(5)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(6)" onmouseout="roll()"></li>
            <li onmouseover="changeIndex(7)" onmouseout="roll()"></li>
        </ul>
    </div>
</body>
</html>

 

第三種方式:

使用jQuery實現。作用:代碼量精簡

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        #adv{
            height: 470px;
            width: 590px;
            margin-top: 0px;
            background-image: url("../image/t0.jpg");
        }
        #nav{
            list-style: none;
            width: 300px;
            height: 20px;
            margin-top:190px ;
        }
        #nav li{
            width: 10px;
            height: 10px;
            border-radius: 50%;
            border: 2px solid red;
            float: left;
            margin: 5px 7px;
        }
        #btn{
            width: 590px;
            height: 40px;
            padding: 0px;
            margin: 180px 0px 0px 0px;
            list-style: none;
        }
        #btn li{
            width: 20px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            color: #ccc;
            background-color: hsla(0,0%,100%,.2);
        }
        .lf{
            float: left;
        }
        .rt{
            float: right;
        }
        .active{
            background: red
        }
    </style>
    <script type="text/javascript" src="https://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript">
        index = 0
        function roleImage() {
            index++
            if(index%8==0){
                index = 0
            }
            $("#adv").css("background-image","url('../image/t"+index+".jpg')")
            changebg(index)
        }
        function changebg(index) {
            $("#nav li").css("background","hsla(0,0%,100%,.2)")
            $("#nav li").eq(index).css("background","red")
        }
        function changeIndex(i){
            clearInterval(inter)
            index = i
            adv = document.getElementById("adv")
            adv.style.backgroundImage="url('../image/t"+index+".jpg')"
            changebg(index)
        }
        function changeImage(flag) {
            clearInterval(inter)
            if(flag=='l')
                index--
            else
                index++
            if(index==-1){index=7}
            if(index==8){index=0}
            $("#adv").css("background-image","url('../image/t"+index+".jpg')")
            changebg(index)
        }
        $(function(){
            $("#nav li").mouseover(function(){
                clearInterval(inter)
                var i = $("#nav li").index(this);
                index = i
                $("#adv").css("background-image","url('../image/t"+index+".jpg')")
                changebg(index)
            })
            $("#nav li").mouseout(function () {
                 inter = setInterval(roleImage,2000)
            })
             $("#btn li").mouseover(function () {
                clearInterval(inter)
                 $(this).css("background","hsla(0,0%,100%,.8)")
            })
             $("#btn li").mouseout(function () {
                inter = setInterval(roleImage,2000)
                 $(this).css("background","hsla(0,0%,100%,.2)")
            })
        })
        var inter = setInterval(roleImage,2000)
    </script>
</head>
<body>
<div id="adv">&nbsp;
    <ul id="btn">
        <li class="lf" onclick="changeImage('l')">&lt;</li>
        <li class="rt" onclick="changeImage('r')">&gt;</li>
    </ul>
    <ul id="nav">
        <li class="active"></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>
</body>
</html>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章