原生JavaScript轮播图实现方法

 更新时间:2021年08月13日 09:58:28   作者:Crzay_August  
这篇文章主要为大家详细介绍了原生JavaScript轮播图实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了JavaScript轮播图的实现方法,供大家参考,具体内容如下

效果截图:

​注:div容器大小和图片路径可以自行设置,添加imga标签后浏览器可以自适应.

创建image文件夹存放图片

写入html文本

<body>
//图片路径可以自己更改
   <div id="outer">
       <ul id="imglist">
           <li><img src="image/8.jpg" alt=""></li>
           <li><img src="image/6.jpg" alt=""></li>
           <li><img src="image/7.jpg" alt=""></li>
           <li><img src="image/6.jpg" alt=""></li>
           <li><img src="image/8.jpg" alt=""></li>
           <li><img src="image/7.jpg" alt=""></li>
           <li><img src="image/6.jpg" alt=""></li>
           <li><img src="image/8.jpg" alt=""></li>
       </ul>
       <div id="nav">
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
       </div>
   </div>
</body>

加入Css样式

<style>
* {
   margin: 0px;
   padding: 0px;
}

/* 外框容器 */
#outer {
   width: 1555px;
   height: 600px;
   background-color: #bfa;
   margin: 100px auto;
   position: relative;
   /* 隐藏 */
   overflow: hidden;

}

/* 图片列表 */
#imglist {
   /* 弹性盒布局 */
   display: flex;
   list-style: none;
   position: relative;
   /* 布局方向 */
   /* flex-direct5on: row; */
   /*一张图片像素移动`1552px*/
   /* right: 1552px; */


}

#imglist li {
   margin: 10px 10px;
}

/* 导航点 */
#nav {
   display: flex;
   list-style: none;
   position: absolute;
   bottom: 50px;
   /*  1555/2 - 6*(20+25)/2 */
   /* left: 642px; */

}

#nav a {
   width: 25px;
   height: 25px;
   margin: 0px 10px;
   background-color: rgb(223, 129, 52);
   border-radius: 5px;
}

/* 鼠标移动效果 */
#nav a:hover {
   background-color: rgb(215, 107, 224);
}
</style>

用JavaScript实现功能

<script type="text/javascript">
    window.onload = function () {

    // 获取外框属性
    var outer = document.getElementById("outer");
    // 获取imglist属性
    var imglist = document.getElementById("imglist");
    // 获取img属性
    var imgArr = document.getElementsByTagName("img");

    // 获取a属性
    var allA = document.getElementsByTagName('a');
    //获取导航点
    var nav = document.getElementById("nav");
    //设置导航点居中位置
    nav.style.left = (outer.offsetWidth / 2) - (allA.length * 45 / 2) + "px";

    //默认显示索引
    var index = 0;
    allA[index].style.backgroundColor = "rgb(215, 107, 224)";
    // 切换导航点定时器
    var temer = setInterval(function () {
        //循环显示
        index = (++index) % allA.length;
        //设置导航点背景颜色
        allA[index].style.backgroundColor = "rgb(215, 107, 224)";
        SetA();
        //自动切换图片
        //修改图片,一张图片像素移动左移动1552px
        imglist.style.transition = "right 1.5s"
        imglist.style.right = (index * 1552) + "px";
       

    }, 1800);

    //单击超链接显示图片
    for (var i = 0; i < allA.length; i++) {
        //为每个超链接添加索引
        allA[i].index = i;
        //为每个超链接绑定单击响应函数
        allA[i].onclick = function () {

            imgIndex = this.index;
            //覆盖导航点当前的位置
            index = imgIndex;
            SetA();
            //修改图片,一张图片像素移动左移动1552px
            imglist.style.transition = "right .85s"
            imglist.style.right = (imgIndex * 1552) + "px";


            //修改选择的a标签
            allA[imgIndex].style.backgroundColor = "rgb(215, 107, 224)";
        };
    }
    //清除a的样式
    function SetA() {
        for (var i = 0; i < allA.length; i++) {
            allA[i].style.backgroundColor = "";
        }
        //给当前导航设定
        allA[index].style.backgroundColor = "rgb(215, 107, 224)";
    }
};

</script>

完整代码

<!DOCTYPE html>
<html lang="zh">

<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>轮播图</title>

    <style>
        * {
            margin: 0px;
            padding: 0px;
        }

        /* 外框容器 */
        #outer {
            width: 1555px;
            height: 600px;
            background-color: #bfa;
            margin: 100px auto;
            position: relative;
            /* 隐藏 */
            overflow: hidden;

        }

        /* 图片列表 */
        #imglist {
            /* 弹性盒布局 */
            display: flex;
            list-style: none;
            position: relative;
            /* 布局方向 */
            /* flex-direct5on: row; */
            /*一张图片像素移动`1552px*/
            /* right: 1552px; */


        }

        #imglist li {
            margin: 10px 10px;
        }

        /* 导航点 */
        #nav {
            display: flex;
            list-style: none;
            position: absolute;
            bottom: 50px;
            /*  1555/2 - 6*(20+25)/2 */
            /* left: 642px; */

        }

        #nav a {
            width: 25px;
            height: 25px;
            margin: 0px 10px;
            background-color: rgb(223, 129, 52);
            border-radius: 5px;
        }

        /* 鼠标移动效果 */
        #nav a:hover {
            background-color: rgb(215, 107, 224);
        }
    </style>
    <script type="text/javascript">
        window.onload = function () {

            // 获取外框属性
            var outer = document.getElementById("outer");
            // 获取imglist属性
            var imglist = document.getElementById("imglist");
            // 获取img属性
            var imgArr = document.getElementsByTagName("img");

            // 获取a属性
            var allA = document.getElementsByTagName('a');
            //获取导航点
            var nav = document.getElementById("nav");
            //设置导航点居中位置
            nav.style.left = (outer.offsetWidth / 2) - (allA.length * 45 / 2) + "px";

            //默认显示索引
            var index = 0;
            allA[index].style.backgroundColor = "rgb(215, 107, 224)";
            // 切换导航点定时器
            var temer = setInterval(function () {
                index = (++index) % allA.length;
                //设置导航点背景颜色
                allA[index].style.backgroundColor = "rgb(215, 107, 224)";
                SetA();
                //自动切换图片
                //修改图片,一张图片像素移动左移动1552px
                imglist.style.transition = "right 1.5s"
                imglist.style.right = (index * 1552) + "px";

                //循环显示

            }, 1800);


            //单击超链接显示图片
            for (var i = 0; i < allA.length; i++) {

                //为每个超链接添加索引
                allA[i].index = i;
                //为每个超链接绑定单击响应函数
                allA[i].onclick = function () {

                    imgIndex = this.index;
                    //覆盖导航点当前的位置
                    index = imgIndex;
                    SetA();
                    //修改图片,一张图片像素移动左移动1552px
                    imglist.style.transition = "right .85s"
                    imglist.style.right = (imgIndex * 1552) + "px";


                    //修改选择的a标签
                    allA[imgIndex].style.backgroundColor = "rgb(215, 107, 224)";

                };

            }
            //清除a的样式
            function SetA() {
                for (var i = 0; i < allA.length; i++) {
                    allA[i].style.backgroundColor = "";
                }

                allA[index].style.backgroundColor = "rgb(215, 107, 224)";


            }


        };


    </script>
</head>

<body>

    <div id="outer">
        <ul id="imglist">
            <li><img src="image/8.jpg" alt=""></li>
            <li><img src="image/6.jpg" alt=""></li>
            <li><img src="image/7.jpg" alt=""></li>
            <li><img src="image/6.jpg" alt=""></li>
            <li><img src="image/8.jpg" alt=""></li>
            <li><img src="image/7.jpg" alt=""></li>
            <li><img src="image/6.jpg" alt=""></li>
            <li><img src="image/8.jpg" alt=""></li>
        </ul>
        <div id="nav">
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
        </div>
    </div>
</body>
</html>

函数使用:

创建定时器:

setInterval(function () {},30)

设置圆角边框:

border-radius: 5px;

offsetWidth 水平方向 width + 左右padding + 左右border
offsetHeight 垂直方向 height + 上下padding + 上下border

clientWidth 水平方向 width + 左右padding
clientHeight 垂直方向 height + 上下padding

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JS实现黑色风格的网页TAB选项卡效果代码

    JS实现黑色风格的网页TAB选项卡效果代码

    这篇文章主要介绍了JS实现黑色风格的网页TAB选项卡效果代码,通过简单的页面元素遍历控制页面tab切换效果,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • 微信上传视频文件提示(推荐)

    微信上传视频文件提示(推荐)

    晚上要下班了老板发来一个任务:把一个300M左右的视频压缩到100M以内,以便在微信上发送。于是就是抽空搞了起来,下面小编把过程分享到脚本之家平台,需要的朋友参考下吧
    2018-11-11
  • JS时间戳转换为常用时间格式的三种方式

    JS时间戳转换为常用时间格式的三种方式

    我们在开发中经常需要把时间戳转化成日期格式,下面这篇文章主要给大家介绍了关于JS时间戳转换为常用时间格式的三种主要方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • js实现类似菜单风格的TAB选项卡效果代码

    js实现类似菜单风格的TAB选项卡效果代码

    这篇文章主要介绍了js实现类似菜单风格的TAB选项卡效果代码,通过javascript鼠标事件及页面元素遍历实现tab切换的功能,非常简单实用,需要的朋友可以参考下
    2015-08-08
  • Javascript中Promise的四种常用方法总结

    Javascript中Promise的四种常用方法总结

    这篇文章主要给大家总结介绍了关于Javascript中Promise的四种常用方法,分别是处理异步回调、多个异步函数同步处理、异步依赖异步回调和封装统一的入口办法或者错误处理,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • js创建对象的方法汇总

    js创建对象的方法汇总

    这篇文章主要介绍了js创建对象的方法,js一个有三种方法创建对象,这里为大家做一个总结,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • JS中ESModule和commonjs介绍及使用区别

    JS中ESModule和commonjs介绍及使用区别

    这篇文章主要介绍了JS中ESModule和commonjs介绍及使用区别,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • javascript写的异步加载js文件函数(支持数组传参)

    javascript写的异步加载js文件函数(支持数组传参)

    这篇文章主要介绍了javascript写的异步加载js文件函数,同时支持单个文件和多个文件(数组传参),但不兼容IE6,需要的朋友可以参考下
    2014-06-06
  • js如何获取访问IP、地区、当前操作浏览器

    js如何获取访问IP、地区、当前操作浏览器

    这篇文章主要介绍了js如何获取访问IP、地区、当前操作浏览器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • JavaScript实现多栏目切换效果

    JavaScript实现多栏目切换效果

    在网站开发中尤其是新闻类网站,经常遇到多栏目切换的设计,这种效果有很多种实现效果,现在记录一种很简单的写法
    2016-12-12

最新评论