• 原生js封装轮播图


      个人实际开发中用到的效果问题总结出来便于自己以后开发查看调用,如果也适用其他人请随意拿走勿喷就行!

      原生js对于思路要求比较高,在js代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比叫好理解,其轮播图只是一个简单的效果,缺点没有写动画效果看起来比较生硬,优点简单好学,容易理解,非常实用

      轮播图介绍 : 三张图片,图片下方有对应图片数量的三个指示点,左右有切换指示,左右指示可要可不要

    HTML代码

    <div id="mlBox">
            <div id="mlImg">
                <img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=511087584,1746612192&fm=26&gp=0.jpg" alt="" id="mlShow">
                <img src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2251986177,3999926444&fm=26&gp=0.jpg" alt="">
                <img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2929314891,994527773&fm=26&gp=0.jpg" alt="">
            </div>
            <p id="mlSpan">
                <span id="mlOn"></span>
                <span></span>
                <span></span>
            </p>
            <div id="mlLeft">
                <img src="image/mlLeft.png" alt="">
            </div>
            <div id="mlRight">
                <img src="image/mlRight.png" alt="">
            </div>
        </div>

    CSS代码

    <style>
            #mlBox{
                 600px;
                height: 500px;
                position: relative;
                margin: 50px auto;
                border: 1px #ececec solid;
            }
            #mlImg{
                 600px;
                height: 500px;
            }
            #mlImg img{
                 600px;
                height: 500px;
                display: none;
            }
            #mlSpan{
                 auto;
                height: 10px;
                position: absolute;
                left: 50%;
                bottom: 20px;
            }
            #mlSpan span{
                display: block;
                float: left;
                 10px;
                height: 10px;
                background: cornflowerblue;
                border-radius: 50%;
                margin: 0 2px;
                z-index: 100;
            }
            #mlImg #mlShow{
                display: block;
            }
            #mlSpan #mlOn{
                background: chartreuse;
            }
            #mlLeft{
                 30px;
                height: 30px;
                background: rgba(51,51,51,0.7);
                position: absolute;
                left: 0;
                top: 50%;
                display: none;
            }
            #mlLeft img{
                 30px;
                height: 30px;
                display: block;
            }
            #mlRight img{
                 30px;
                height: 30px;
                display: block;
            }
            #mlRight{
                 30px;
                height: 30px;
                background: rgba(51,51,51,0.7);
                position: absolute;
                right: 0;
                top: 50%;
                display: none;
            }
    </style>

    JS代码

    <script>
        ml(true);  //调用ml函数  注:传参是否需要左右指示  默认false
        function ml(indicator) {
            var oMlBox = document.getElementById('mlBox');  //获取id:mlBox
            var oMlImg = document.getElementById('mlImg');  //获取id:mlImg
            var oMlSpan = document.getElementById('mlSpan');  //获取id:mlSpan
            var aSpan = oMlSpan.getElementsByTagName('span');  //获取id:mlSpan里面的span标签
            var aImg = oMlImg.getElementsByTagName('img');  //获取id:mlImg里面的img标签
            var oMlLeft = document.getElementById('mlLeft');  //获取id:mlLeft
            var oMlRight = document.getElementById('mlRight');  //获取id:mlRight
            var u = 0;  //当前照片位置
            var shut = null;  //定时器的名字
            function f1() {
                for (var i = 0; i < aSpan.length; i++) {  //循环id:mlSpan里面的span标签
                    aSpan[i].id = '';  //让span标签的id等于空
                    aImg[i].id = '';  //让id:mlImg里面img标签id等空
                }
                aSpan[u].id = 'mlOn';  //当前位置的span标签id等于mlOn
                aImg[u].id = 'mlShow';  //当前位置的img标签id等于mlShow
            }
            for (var f = 0; f < aSpan.length; f++) {  //循环id:mlSpan里面的span标签
                aSpan[f].index = f;  //span标签第f个的index等于f
                aSpan[f].onclick = function () {  //点击span标签  注:照片下面的三个点
                    u = this.index;  //当前位置等于当前span标签index的位置
                    f1();  //调用f1函数
                }
            }
            oMlBox.onmousemove = function () {  //鼠标悬浮id:mlBox
                clearInterval(shut);  //关闭定时器
                if (indicator) {  //是否显示左右指示  注:调用ml函数传参
                    oMlLeft.style.display = 'block';  //显示左指示
                    oMlRight.style.display = 'block';  //显示右指示
                    oMlRight.onclick = function () {  //点击右指示
                        u++;  //当前位置加一
                        if (u >= aImg.length) {  //当前位置大于照片的数量就等于0
                            u = 0;
                        }
                        f1();  //调用f1函数
                    };
                    oMlLeft.onclick = function () {  //点击左指示
                        u--;  //当前位置减一
                        if (u < 0) {  //当前位置小于0时就让当前位置等于照片数量减一
                            u = aImg.length - 1;  //注:因为计算机从零开始数所以要减一
                        }
                        f1();  //调用f1函数
                    };
                }else{
                    oMlLeft.style.display = 'none';  //左指示消失
                    oMlRight.style.display = 'none';  //右指示消失
                }
            };
            oMlBox.onmouseout = function () {  //当鼠标移出id:mlBox
                f2();  //调用f2函数
                oMlLeft.style.display = 'none';  //左指示消失
                oMlRight.style.display = 'none';  //右指示消失
            };
            function f2(){
                shut = setInterval(function () {  //定时器
                    u++;  //每3秒当前位置加一
                    if (u >= aImg.length) {  //当前位置大于等于照片的数量当前位置等于0
                        u = 0;
                    }
                    f1();  //调用f1函数
                },3000);
            }
            f2();  //调用f2函数
        }
    </script>
  • 相关阅读:
    华为摄像机sdc开发_02_华为摄像机到手后的一些问题
    华为摄像机sdc开发_01_基础开发环境搭建
    LNMP环境搭建及服务器加固
    常用数据库端口号
    Linux文件查找
    SpringBoot使用jackson
    Vue.js源码解析-Vue初始化流程之动态创建DOM
    Vue.js源码解析-Vue初始化流程
    Vue.js源码解析-从scripts脚本看vue构建
    Linux系统编程-文件IO
  • 原文地址:https://www.cnblogs.com/webmuluo/p/11101791.html
Copyright © 2020-2023  润新知