最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實現(xiàn)簡單圖片輪播效果

 更新時間:2021年05月19日 15:32:08   作者:一紙嵐風(fēng)  
這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)簡單圖片輪播效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了JS實現(xiàn)簡單圖片輪播效果的具體代碼,供大家參考,具體內(nèi)容如下

實現(xiàn)效果

  • 左右按鈕可點擊左右移動顯示圖片進(jìn)行無縫滾動
  • 下面的小圓圈點擊可跳到對應(yīng)的圖片索引
  • 不進(jìn)行上述操作時,圖片自動輪播

html源碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Carousel chart</title>
    <link rel="stylesheet" href="./style.css" >
    <script src="./index.js"></script>
    <script src="./animate.js"></script>
</head>

<body>
    <div class="carousel_box" id="carousel-box">
        <a href="javascript:;" class="arrow-l">
            < </a>
                <a href="javascript:;" class="arrow-r"> > </a>
                <ul class="move">
                    <li><img src="./images/xuezhong_1.jpg" alt=""></li>
                    <li><img src="./images/guimizhizhu_2.jpg" alt=""></li>
                    <li><img src="./images/jianlai_3.jpg" alt=""></li>
                    <li><img src="./images/yichang_4.jpg" alt=""></li>
                </ul>
                <ol class="circle">
                </ol>
    </div>
</body>

</html>

一個大的div盒子里面,兩個左右懸浮于中間的按鈕,四張圖片,一行相對于下面的小圓圈

CSS源碼

*{
    padding: 0;
    margin: 0;
}

li {
    list-style-type: none;
}

#carousel-box {
    position: relative;
    width: 700px;
    height: 300px;
    background-color: pink;
    margin: 100px auto;
    overflow: hidden;
}

.arrow-l,.arrow-r {
    display: none;
    position:absolute;
    width: 24px;
    height: 40px;
    top: 50%;
    margin-top: -20px;
    background: rgba(0, 0, 0, 0.3);
    text-align:center;
    line-height: 40px;
    color: #fff;
    font-size: 18px;
    font-family: 'icomoon';
    z-index: 3;
}
.arrow-r {
    right: 0;
}

#carousel-box img{
    width: 700px;
    height: 300px;
}

#carousel-box ul {
    position:absolute;
    width: 1000%;
}

#carousel-box ul li {
    float: left;
}

.circle {
    position: absolute;
    bottom: 10px;
    right: 10px;
}

.circle li {
    float: left;
    width: 8px;
    height: 8px;
    margin: 0 5px;
    border: 2px solid rgba(255, 255, 255, 0.5);
    border-radius: 50%;
    cursor: pointer;
    z-index: 9999;
}

.current {
    background-color: pink;
}

JS源碼

animate.js:在水平平面實現(xiàn)左右移動的函數(shù)

function animate(obj, target, callback) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function () {
        /* 判斷正負(fù),小數(shù)取大還是取小 */
        var step = (target - obj.offsetLeft) / 10;
        step = step > 0 ? Math.ceil(step) : Math.floor(step);

        if (obj.offsetLeft == target) {
            clearInterval(obj.timer);
            callback && callback();
        }
        obj.style.left = obj.offsetLeft + step + 'px';
    }, 15);
}

index.js

window.addEventListener('load', function () {
    var carousel = document.querySelector('.carousel_box');
    var ul = document.querySelector('.move');
    var ol = document.querySelector('.circle');
    var carcouselWidth = carousel.offsetWidth;
    var arrow_l = document.querySelector('.arrow-l');
    var arrow_r = document.querySelector('.arrow-r');

    carousel.addEventListener('mouseenter', function () {
        arrow_r.style.display = 'block';
        arrow_l.style.display = 'block';
        clearInterval(timer);
        timer = null; // 清除定時器變量
    })

    carousel.addEventListener('mouseleave', function () {
        arrow_r.style.display = 'none';
        arrow_l.style.display = 'none';
        timer = setInterval(function () {
            arrow_r.click();
        }, 2000);
    })
    var num = 0;
    var circle = 0;

    // 根據(jù)圖片數(shù)量生成相對應(yīng)的小圓圈
    for (var i = 0; i < ul.children.length; i++) {
        var li = document.createElement('li');
        li.setAttribute('index', i);
        ol.appendChild(li);


        li.addEventListener('click', function () {
            for (var i = 0; i < ol.children.length; i++) {
                ol.children[i].className = '';
            }
            this.className = 'current';
            var n = this.getAttribute('index');
            num = n;
            circle = n;
            animate(ul, -n * carcouselWidth);
            console.log(n);
        })
    }

    ol.children[0].className = 'current';
    var first = ul.children[0].cloneNode(true);
    ul.appendChild(first);

    var flag = true;


    /* function circleChange() {
        for (var i = 0; i < ol.children.length; i++) {
            ol.children[i].className = '';
        }
        ol.children[circle].className = 'current';
    } */


    arrow_r.addEventListener('click', function () {

        if (flag) {
            flag = false;
            if (num == ul.children.length - 1) {
                ul.style.left = 0;
                num = 0;
            }
            num++;
            animate(ul, -num * carcouselWidth, function () {
                flag = true;
            });
        }

        circle++;
        if (circle == ol.children.length) {
            circle = 0;
        }

        circleChange();
    })

    arrow_l.addEventListener('click', function () {
        if (flag) {
            flag = false;
            if (num == 0) {
                num = ul.children.length - 1;
                ul.style.left = -num * carcouselWidth + 'px';

            }
            num--;
            animate(ul, -num * carcouselWidth, function () {
                flag = true;
            });

            circle--;
            circle = circle < 0 ? ol.children.length - 1 : circle;
            // 調(diào)用函數(shù)
            circleChange();
        }
    });


    function circleChange() {

        for (var i = 0; i < ol.children.length; i++) {
            ol.children[i].className = '';
        }

        ol.children[circle].className = 'current';
    }

    var timer = setInterval(function () {

        arrow_r.click();
    }, 2000);

心得:在js實現(xiàn)功能中,如何根據(jù)圖片數(shù)量生成小圓圈并能無縫滾動需要重點注意。
未解決的bug:多次快速點擊小圓圈跳轉(zhuǎn)后,可能會導(dǎo)致小圈圈與圖片索引位置錯亂,同樣點擊左右按鈕也有可能出現(xiàn)類似問題。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于JavaScript作用域你想知道的一切

    關(guān)于JavaScript作用域你想知道的一切

    關(guān)于JavaScript作用域你想知道的一切,本文全部告訴大家,幫助大家全面的了解JavaScript作用域,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 微信小程序如何實現(xiàn)快速精確定位

    微信小程序如何實現(xiàn)快速精確定位

    騰訊位置服務(wù)為微信小程序提供了基礎(chǔ)的標(biāo)點能力、線和圓的繪制接口等地圖組件和位置展示、地圖選點等地圖API位置服務(wù)能力支持,下面這篇文章主要給大家介紹了關(guān)于微信小程序如何實現(xiàn)快速精確定位的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 值得分享的輕量級Bootstrap Table表格插件

    值得分享的輕量級Bootstrap Table表格插件

    這篇文章為大家分享了輕量級Bootstrap Table表格插件,以表格的形式顯示的數(shù)據(jù),支持單選,復(fù)選框,排序,分頁,顯示/隱藏列等操作,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Javascript實現(xiàn)關(guān)聯(lián)數(shù)據(jù)(Linked Data)查詢及注意細(xì)節(jié)

    Javascript實現(xiàn)關(guān)聯(lián)數(shù)據(jù)(Linked Data)查詢及注意細(xì)節(jié)

    DBpedia對Wikipedia的數(shù)據(jù)變成Linked Data形式,使得機器也能讀懂并自由獲得這些數(shù)據(jù);本文的主要目的是利用Javascript從DBpedia中獲取我們想要的數(shù)據(jù),感興趣的朋友可以參考下,希望可以幫助到你
    2013-02-02
  • layui樹形菜單動態(tài)遍歷的例子

    layui樹形菜單動態(tài)遍歷的例子

    今天小編就為大家分享一篇layui樹形菜單動態(tài)遍歷的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript定時器實現(xiàn)限時秒殺功能

    JavaScript定時器實現(xiàn)限時秒殺功能

    這篇文章主要為大家詳細(xì)介紹了JavaScript定時器實現(xiàn)限時秒殺功能,適合用于電商節(jié)日活動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • nodejs win7下安裝方法

    nodejs win7下安裝方法

    什么是Node.js?還服務(wù)器端javascript?對于這個概念我在這篇文章不做解釋,可以自己去搜索了解下,服務(wù)器端js不是新技術(shù),只是最近的node.js的火爆讓他爆發(fā)了,我會在以后的文章里解釋什么是node.js
    2012-05-05
  • JS實現(xiàn)添加緩動畫的方法

    JS實現(xiàn)添加緩動畫的方法

    這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)添加緩動畫的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • javascript函數(shù)報Uncaught?ReferenceError:?XXX?is?not?defined

    javascript函數(shù)報Uncaught?ReferenceError:?XXX?is?not?define

    本文主要介紹了javascript函數(shù)報Uncaught?ReferenceError:?XXX?is?not?defined,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • js省市區(qū)級聯(lián)查詢(插件版&無插件版)

    js省市區(qū)級聯(lián)查詢(插件版&無插件版)

    這篇文章主要為大家詳細(xì)介紹了js省市區(qū)級聯(lián)查詢,包括插件版和無插件版,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論

呈贡县| 牡丹江市| 沈阳市| 丹巴县| 清徐县| 资源县| 大兴区| 新沂市| 剑阁县| 西城区| 铜陵市| 涞水县| 柏乡县| 兴国县| 台湾省| 奉化市| 社旗县| 区。| 察隅县| 开平市| 房产| 康平县| 乃东县| 上饶县| 凉山| 龙门县| 清镇市| 池州市| 元朗区| 施甸县| 牙克石市| 太保市| 马公市| 宽城| 通河县| 泸溪县| 闸北区| 来安县| 滕州市| 峡江县| 德阳市|