首頁 >web前端 >js教程 >怎麼用簡單的js程式碼實現輪播圖滾動效果?

怎麼用簡單的js程式碼實現輪播圖滾動效果?

藏色散人
藏色散人原創
2018-08-09 16:26:234256瀏覽

首頁的輪播圖展示基本上是不可或缺的。那麼對於新手小白來說可能覺得用原聲js會有點困難,其實不需要把圖片滾動想的很複雜。其js輪播圖實現原理主要可以理解為相同大小的圖片並成一列,但只顯示其中一張圖片,其餘的隱藏,透過修改left值來改變顯示的圖片。輪播圖片每隔幾秒鐘自動滑動,達到圖片輪流播放的效果,從效果來說有滑動式的也有漸入式的,滑動式的輪播圖就是圖片從左向右滑入的效果,漸入式的輪播圖就是圖片根據透明度漸漸顯示的效果。

那麼這篇文章介紹得就是怎麼用js實現圖片輪播及滑動式的效果,希望對需要的朋友們有所幫助。

js實作輪播圖具體程式碼範例如下:

    //HTML代码部分
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>js实现轮播图原理及示例</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
    <!--从左向右滑动-->
        <nav>
            <ul id="index">
                <li class="on"></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <ul id="img">
                <li><img src="img1.jpg" alt="img1"></li>
                <li><img src="img2.jpg" alt="img2"></li>
                <li><img src="img3.jpg" alt="img3"></li>
                <li><img src="img4.jpg" alt="img4"></li>
                <li><img src="img5.jpg" alt="img5"></li>
            </ul>
        </nav>
    <script src="script.js"></script>
    </body>
    </html>
//css代码部分
*{        margin:0;        padding:0;
    }    nav{        width: 720px;        height: 405px;        margin:20px auto;        overflow: hidden;        position: relative;
    }    #index{        position: absolute;        left:320px;        bottom: 20px;
    
    }    #index li{        width:8px;        height: 8px;        border: solid 1px gray;        border-radius: 100%;        background-color: #eee;        display: inline-block;
    }    #img{        width: 3600px;/*不给宽高无法移动*/
        height: 405px;        position: absolute;/*不定义absolute,js无法设置left和top*/
        z-index: -1;
    }    #img li{        width: 720px;        height: 405px;        float: left;
    }    #index .on{        background-color: black;
    }
//js代码部分
function moveElement(ele,x_final,y_final,interval){//ele为元素对象
        var x_pos=ele.offsetLeft;        var y_pos=ele.offsetTop;        var dist=0;        if(ele.movement){//防止悬停
            clearTimeout(ele.movement);
        }        if(x_pos==x_final&&y_pos==y_final){//先判断是否需要移动
            return;
        }
        dist=Math.ceil(Math.abs(x_final-x_pos)/10);//分10次移动完成
        x_pos = x_pos<x_final ? x_pos+dist : x_pos-dist;
        
        dist=Math.ceil(Math.abs(y_final-y_pos)/10);//分10次移动完成
        y_pos = y_pos<y_final ? y_pos+dist : y_pos-dist;
        
        ele.style.left=x_pos+&#39;px&#39;;
        ele.style.top=y_pos+&#39;px&#39;;
        
        ele.movement=setTimeout(function(){//分10次移动,自调用10次
            moveElement(ele,x_final,y_final,interval);
        },interval)
    }

註:

圖片移動函數moveElement()需要取得圖片現在的位置以及目標位置併計算它們之間的差距進行移動,可以用offsetLeft和offsetTop獲取圖片現在的位置。圖片移動時「劃過」的效果是將距離分成好10次進行移動,即利用setTimeOut函數,然而為了防止滑鼠懸停,需呼叫clearTimeout()函數。

【相關文章推薦】

實例詳解jquery實作左右輪播圖效果

CSS3實作輪播圖效果

JS輕鬆實作輪播圖

兩種js實作輪播圖的方式


以上是怎麼用簡單的js程式碼實現輪播圖滾動效果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn