需求:

  1. 鼠标移动到下标页码时,也转换到相对应的图片;
  2. 多张图片可以自动轮播;
  3. 鼠标移动至图片时,停止自动轮播;
  4. 可以手动左右调节;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原生JS轮播图</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .outer{
            position: relative;
            top: 20px;
            cursor: pointer;
        }
        .outer .img-box .img-item {
            display: none;
            position: absolute;
            top: 0;
            left: 50%;
            transform: translateX(-50%);
        }
        .active{
            display: block !important;
        }
        .outer ul{
            position: absolute;
            top: 250px;
            left: 50%;
            transform: translateX(-50%);
            text-align: center;
        }
        .outer ul li.page-number{
            list-style-type: none;
            display: inline-block;
            color: black;
            margin: 0 6px;
            font-size: 12px;
            width: 20px;
            height: 20px;
            background-color: #05dfff;
            line-height: 20px;
            text-align: center;
            border-radius: 50%;
        }
        .page-active{
            background-color: #0000FF !important;
        }
        .outer .mover{
            position: absolute;
            top: 110px;
            left: 50%;
            height: 60px;
            width: 40px;
            background-color: rgba(255,255,255,0.65);
            line-height: 60px;
            text-align: center;
            font-size: 26px;
            display: none;
            user-select: none;  /*用户点击时,内容不能被选中*/
        }
        .outer .leftMover{
            margin-left: -260px;
        }
        .outer .rightMover{
            margin-left: 220px;
        }
    </style>
</head>
<body>
    <div id="outer" class="outer">
        <div class="img-box">
            <img src="../img/1.jpg" class="img-item active">
            <img src="../img/2.jpg" class="img-item">
            <img src="../img/3.jpg" class="img-item">
            <img src="../img/4.jpg" class="img-item">
        </div>
        <ul>
            <li class="page-number page-active">1</li>
            <li class="page-number">2</li>
            <li class="page-number">3</li>
            <li class="page-number">4</li>
        </ul>
        <a id="leftMover" class="mover leftMover">&lt;</a>
        <a id="rightMover" class="mover rightMover">&gt;</a>
    </div>
    <script>
        var objectImgItems = document.getElementsByClassName("img-item");
        var objectRowItems = document.getElementsByClassName("page-number");
        var objectOuter = document.getElementById("outer");
        var objectMover = document.getElementsByClassName("mover");
        var objectLeftMover = document.getElementById("leftMover");
        var objectRightMover =  document.getElementById("rightMover");
        <!-- 获取node在nodeList中的索引值 -->
        function getIndex(node, nodeList) {
            for (var index=0; index<nodeList.length; index++){
                if (nodeList[index] === node){
                    return index
                }
            }
        }
        <!-- 根据传入的页码索引值,转换图片和页码 -->
        function move(numberIndex) {
            for (var i=0; i<objectImgItems.length; i++){
                if (i === numberIndex) {
                    objectImgItems[i].classList.add("active");
                    objectRowItems[i].classList.add("page-active");
                } else {
                    objectImgItems[i].classList.remove("active");
                    objectRowItems[i].classList.remove("page-active");
                }
            }
        }
        <!-- 鼠标覆盖页码时,图片和页码进行转换 -->
        for (var i=0; i<objectRowItems.length; i++){
            objectRowItems[i].onmouseover = function () {
                var numberIndex = getIndex(this, objectRowItems);
                move(numberIndex);
                pageNumber = numberIndex;
            };
        }
        <!-- 鼠标移动到整个模块,则显示左右移动的图标,图片停止自动转换 -->
        objectOuter.onmouseover = function () {
            clearInterval(intervalId);
            for (var i=0; i<objectMover.length; i++){
                objectMover[i].classList.add("active");
            }
        };
        <!-- 鼠标离开整个模块,则隐藏左右移动的图标,图片开始自动转换 -->
        objectOuter.onmouseout = function () {
            intervalId = setInterval(directionMove, 2000);
            for (var i=0; i<objectMover.length; i++){
                objectMover[i].classList.remove("active");
            }
        };
        <!-- 添加页码变量,通过自增、自减,实现左右转换 -->
        var pageNumber = 0;
        function directionMove(isLeft) {
            if (isLeft){
                if (pageNumber === 0) {
                    pageNumber = 4;
                }
                pageNumber--;
            } else {
                if (pageNumber === 3) {
                    pageNumber = -1;
                }
                pageNumber++;
            }
            move(pageNumber);
        }
        <!-- 添加定时器,实现自动转换 -->
        var intervalId = setInterval(directionMove, 2000);
        <!-- 右转换 -->
        objectRightMover.onclick = function () {
            directionMove();
        };
        <!-- 左转换 -->
        objectLeftMover.onclick = function () {
            directionMove(true);
        }
    </script>
</body>
</html>

JavaScript轮播图的更多相关文章

  1. JavaScript 轮播图

    这是我自己做的一个轮播图,大家可以看看 ,我还没进行优化.有改进的地方可以私聊 布局什么的你们自己搞定吧 <div class="slider" id="circl ...

  2. 练习:javascript轮播图效果

    javascript轮播自动播放切换滑过停止,上一页/下一页 <!DOCTYPE html> <html lang="en"> <head> & ...

  3. 超详细的原生JavaScript轮播图(幻灯片)的制作

    本次轮播图的制作主要分为3个部分,分别是:设置定时器自动轮播:点击左右切换按钮轮播:下方点击按钮轮播.具体实现步骤如下: (效果图) html部分代码如下: <div class="s ...

  4. JavaScript 轮播图实例

    HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  5. JavaScript 自适应轮播图

    代码 话不多说,先上代码,方便复制粘贴.演示 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. 带轮播图、导航栏、商品的简单html,以及轮播图下边数字随轮播图的改变而改变

    ---恢复内容开始--- 在做这个的时候,最不会的是中间轮播图下边的数字是如何实现转变的,后来加入了jQuery就能实现了. css部分: <style type="text/css& ...

  7. 自己用原生JS写的轮播图,支持移动端触摸滑动,分页器圆点可以支持mouseover鼠标移入和click点击,高手看了勿喷哈

    自己用原生JavaScript写的轮播图,分页器圆点按钮可支持click点击,也可支持mouseover鼠标悬浮触发,同时支持移动端触摸滑动,有兴趣的友友可以试试哈,菜鸟一枚,高手看了勿喷,请多多指正 ...

  8. jquery 广告轮播图

    轮播图 /*轮播图基本功能: * 1图片切换 * 1.1图片在中间显示 * 1.2图片淡入淡出 * 2左右各有一个按钮 * 2.1点击左按钮,图片切换上一张 * 2.2点击右按钮,图片切换下一张 * ...

  9. 【JavaScript】固定布局轮播图特效

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. bzoj2676

    二分概率+矩乘+dp 也是二分概率,然后dp[i][j][k]表示当前到了i,有j条命,下一次的收益是k,然后矩乘转移,但是我自己的似乎wa了,抄了liu_runda的才行,具体不知道为什么 注释的是 ...

  2. 【202】ThinkPad手势&快捷键

    快捷键: Ctrl + Alt + ↑:正常屏幕Ctrl + Alt + ↓:翻转屏幕Ctrl + Alt + →:向左侧翻转90°Ctrl + Alt + ←:向右侧翻转90° 首先看下 Esc 键 ...

  3. Codechef LOCAUG17

    做完题目很少有写题解的习惯,强行PO一组吧. 比赛链接:https://www.codechef.com/LOCAUG17 PRINCESS 给定字符串s,问s是否存在长度大于1的回文子串. 解:分两 ...

  4. Java中对类的主动引用和被动引用

    1.遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,类如果没初始化就会被初始化,创建对象,读取或设置静态字段,调用静态方法. 2.反射 3.子类初始化前 ...

  5. 洛谷 - P1111 - 修复公路 - 并查集

    https://www.luogu.org/problemnew/solution/P1111 并查集的水题,水题都错了好多发. 首先并不是有环就退出,而是连通分支为1才退出,每次合并成功连通分支才会 ...

  6. Codeforces - 909C - Python Indentation - 简单dp

    http://codeforces.com/problemset/problem/909/C 好像以前做过,但是当时没做出来,看了题解也不太懂. 一开始以为只有上面的for有了循环体,这里的state ...

  7. Codeforces Round #355 (Div. 2) B. Vanya and Food Processor

    菜菜菜!!!这么撒比的模拟题,听厂长在一边比比比了半天,自己想一想,然后纯模拟一下,中间过程检测一下,妥妥的就可以过. 题意:有N个东西要去搞碎,每个东西有一个高度,然后有一台机器支持里面可以达到的最 ...

  8. springcloud(二) 负载均衡器 ribbon

    代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo ribbon是一个负载均衡客户端 类似nginx反向代理,可 ...

  9. 449B

    B. Chtholly's request time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  10. oracle 生成随机数

    产生一个介于指定范围之内的38位精度的随机数SQL> SELECT DBMS_RANDOM.VALUE(1, 9999) FROM dual; DBMS_RANDOM.VALUE(1,9999) ...