轮播图js代码实现示例(原生)

今天做网站的时候需要用上JS轮播图代码,而且还要求是原生的JS代码。

 

这里,我就给大家提供一个纯Js轮播图示例代码,大家可在此基础上进行改进,包括指示器的样式,容器的大小,按钮的样式,轮播时间等等都可以修改的。该代码通俗易懂,Js部分逻辑清晰。大家完全可以创造出属于自己的样式!

 

JS轮播图代码:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS轮播图代码示例 - 付杰博客</title>
</head>
<body>
<!--CSS代码-->
<style>
    *{
        list-style: none;
    }
    #wrap {
        width: 590px;
        height: 470px;
        margin: 150px auto;
        position: relative;
        cursor: pointer;
    }

    #pic li {
        display: none;
        position: absolute;
        top: 0;
        left: 0;
        z-index: 1;
    }

    #num {
        position: absolute;
        z-index: 2;
        bottom: 20px;
        left: 46px;
    }

    #num li {
        float: left;
        width: 8px;
        height: 8px;
        margin: 5px;
        border-radius: 50%;
        border: 1px solid #FFFFFF;
        line-height: 20px;
        background: transparent;
        text-align: center;
    }

    #num li.active {
        background:  #fefefe;
    }

    .arrow {
        z-index: 3;
        height: 40px;
        width: 30px;
        position: absolute;
        top: 45%;
        line-height: 40px;
        background: rgba(0, 0, 0, 0.3);
        text-align: center;
        display: none;
    }
    #wrap:hover .arrow {
        display: block;
    }
    .arrow:hover {
        background: rgba(0, 0, 0, 0.7);
    }


    #left {
        left: 0;
    }

    #right {
        right: 0;
    }

</style>

<!-- HTML 代码 -->
<!-- 注意:轮播图开始注意这里的图片路径,一定要使用自己的图片路径!-->
<div id="wrap">

    <ul id="pic">
        <li style="display: none;"><img src="1.jpg" alt=""></li>
        <li style="display: none;"><img src="2.jpg" alt=""></li>
        <li style="display: block;"><img src="3.jpg" alt=""></li>
        <li style="display: none;"><img src="4.jpg" alt=""></li>
        <li style="display: none;"><img src="5.jpg" alt=""></li>
        <li style="display: none;"><img src="6.jpg" alt=""></li>
        <li style="display: none;"><img src="7.jpg" alt=""></li>
    </ul>
    <ul id="num">
        <li class="active"></li>
        <li class=""></li>
        <li class=""></li>
        <li class=""></li>
        <li class=""></li>
        <li class=""></li>
        <li class=""></li>
    </ul>
    <a href="javascript:;" class="arrow" id="left">&lt;</a>
    <a href="javascript:;" class="arrow" id="right">&gt;</a>
</div>

<!-- 原生 Js 代码-->
<script type="text/javascript">
    function $(id) {
        return document.getElementById(id);
    }
    window.onload = function() {
        var oLeft = $("left");
        var oRight = $("right");
        var index = 0;
        var timer = null;
        var pic = $("pic").getElementsByTagName("li");
        var num = $("num").getElementsByTagName("li");
        var oDiv = $("wrap");

        oRight.onclick = function() {
            index++;
            if (index >= pic.length) {
                index = 0;
            }
            change(index);
        }
        oLeft.onclick = function() {
            index--;
            if (index < 0) {
                index = pic.length - 1;
            }
            change(index);
        }
        oDiv.onmouseover = function() {
            clearInterval(timer);
        }
        oDiv.onmouseout = function() {
            timer = setInterval(run, 2000); //鼠标移出后重新开始定时器
        }

        timer = setInterval(run, 4000); //定时器

        function run() { //用于定时器的函数
            index++;
            if (index >= pic.length) {
                index = 0;
            }
            change(index);
        }

        for (var i = 0; i < num.length; i++) {
            num[i].index = i; //把索引值存起来
            num[i].onmouseover = function() {
                change(this.index);
            }
        }

        function change(curindex) { //用于切换图片的函数
            for (var i = 0; i < pic.length; i++) {
                pic[i].style.display = "none";
                num[i].className = "";
            }
            pic[curindex].style.display = "block";
            num[curindex].className = "active";
            index = curindex;
        }
    }
</script>


</body>
</html>

 

最终效果图如下:

JS轮播图效果示例

 

总结:

实现一个轮播图还是不难的,大体思路如下:

1、先创建一个div,限定其宽度和高度,overflow:hidden。

2、然后创建一个装图片的div,宽度为所有图片的总宽度,并且使其浮动,这样所有的图片就处于一行中。

3、然后为了实现无缝滚动,所以需要在首尾分别添加一张过渡图片。 先添加两个按钮, 使其可以手动轮播,然后只需要添加一个定时器使其朝一个方向自动轮播即可,因为用户有时需要查看详情,所以当鼠标进入时就clear定时器,滑出再定时播放。

4、为了更好地用户体验,我们再下面添加了一排小圆点,用户可以清楚地知道现在所处的位置, 最后, 利用闭包使得用户可以直接通过点击小圆点切换图片。

    A+
发布日期:2022年04月06日 10:15:24  所属分类:JavaScript
最后更新时间:2022-04-06 10:16:57
付杰
  • ¥ 15元
  • 市场价:15元
  • ¥ 398.0元
  • 市场价:598.0元
  • ¥ 119.0元
  • 市场价:199.0元
  • ¥ 299.0元
  • 市场价:599.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: