• 原生Js 实现的简单无缝滚动轮播图


    原简单的滚动轮播代码

    <html>
    <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>Document</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .scroll{
                position: relative;
                 830px;/*展示宽度 展示4个图+3个边框=830*/
                height: 130px;
                border: 10px solid rgb(15, 15, 15);
                margin: 100px auto;
                overflow: hidden;
            }
            .scroll ul{
                position: absolute;
                 5000px;/*ul能存下所有li的宽*/
                height: 130px;
                top: 0;
                left: 0;
            }
            .scroll ul li{
                float: left;
                 200px;
                height: 130px;
                margin-right: 10px;
                overflow: hidden;
            }
    
        </style>
    </head>
    <body>
        <div id="scroll" class="scroll">
            <ul id="munit">
                <li><img src="../BOM/shuzi/3.png" alt=""></li>
                <li><img src="../BOM/shuzi/4.png" alt=""></li>
                <li><img src="../BOM/shuzi/5.png" alt=""></li>
                <li><img src="../BOM/shuzi/6.png" alt=""></li>
                <li><img src="../BOM/shuzi/7.png" alt=""></li>
                <li><img src="../BOM/shuzi/8.png" alt=""></li>
                <li><img src="../BOM/shuzi/9.png" alt=""></li>
    
                <li><img src="../BOM/shuzi/3.png" alt=""></li>
                <li><img src="../BOM/shuzi/4.png" alt=""></li>
                <li><img src="../BOM/shuzi/5.png" alt=""></li>
                <li><img src="../BOM/shuzi/6.png" alt=""></li>
                <li><img src="../BOM/shuzi/7.png" alt=""></li>
                <li><img src="../BOM/shuzi/8.png" alt=""></li>
                <li><img src="../BOM/shuzi/9.png" alt=""></li>
            </ul>
        </div>
    
        <script>
            //获取元素
            var scroll = document.getElementById("scroll");
            var munit = document.getElementById("munit");
            var li = munit.children;
            // 进行滚动
            var nowLeft = 0;
            //要找到ul元素运动的折返点
            var back = -1470;//图和边框是li的宽度,展示的有4张图,所以折返点就是1260
            //定时器
            var timer = setInterval(run,20);
    
            // 鼠标移上scroll停止
            scroll.onmouseover = function(){
                clearInterval(timer);
            }
            // 移开轮播
            scroll.onmouseout = function(){
                timer = setInterval(run,20);
            }
    
            //运动函数
            function run(){
                nowLeft -= 2;
                //判断是否走到了折返点,走到了,则瞬间切换到0位置
                if(nowLeft <= back){
                    nowLeft = 0;
                }
                munit.style.left = nowLeft + "px";
            }
    
           
        </script>
    </body>
    </html>
    

    在<div id="scroll">结构给ul新增的一个父级div,这样之后添加图片,后期通过获取ul宽度就可以了计算折算点
    1、折返点计算需要通过js自动计算
    var back = -munit.offsetWidth;//元素左移,值为负数
    2、自动生成另一组对应的图片结构 li
    munit.innerHTML = munit.innerHTML + munit.innerHTML;//这样就会增加一组li标签,后期增加图片也会随之增加

    http://www.ssnd.com.cn 化妆品OEM代加工

    修改部分代码

    css改写部分:
      /*给ul新增的一个父级div,这样添加图片后期获取ul宽度 就可以了 */
            .scroll .inner{
                position: relative;
                 5000px;
            }
            .scroll ul{
                position: absolute;
                height: 130px;
                top: 0;
                left: 0;
                list-style: none;
    
    
    body改写部分:      
    <body>
        <div id="scroll" class="scroll">
           <div class="inner">
               <ul id="munit">
                  <li><img src="../BOM/shuzi/3.png" alt=""></li>
                  <li><img src="../BOM/shuzi/4.png" alt=""></li>
                  <li><img src="../BOM/shuzi/5.png" alt=""></li>
                  <li><img src="../BOM/shuzi/6.png" alt=""></li>
                  <li><img src="../BOM/shuzi/7.png" alt=""></li>
                  <li><img src="../BOM/shuzi/8.png" alt=""></li>
                  <li><img src="../BOM/shuzi/9.png" alt=""></li>
                  <li><img src="../BOM/shuzi/10.png" alt=""></li>
              </ul>
           </div>
        </div>
    
    js改写部分:
    <script>
            //获取元素
            var scroll = document.getElementById("scroll");
            var munit = document.getElementById("munit");
    
            //改写部分
            //1 折返点计算需要通过Js自动计算
            var back = -munit.offsetWidth;//元素左移,值为负数
            //2 自动生成另一组对应的图片结构 li
            munit.innerHTML = munit.innerHTML + munit.innerHTML;
            // 进行滚动
    
    
            var nowLeft = 0;
            //定时器
            var timer = setInterval(run,20);
    
            // 鼠标移上scroll停止
            scroll.onmouseover = function(){
                clearInterval(timer);
            }
            // 移开轮播
            scroll.onmouseout = function(){
                timer = setInterval(run,20);
            }
    
            //运动函数
            function run(){
                nowLeft -= 1;
                //判断是否走到了折返点,走到了,则瞬间切换到0位置
                if(nowLeft <= back){
                    nowLeft = 0;
                }
                munit.style.left = nowLeft + "px";
            }
    
        </script>
    </body>
    </html>
    

    这样的代码耦合性低,也适合任意个数的li、任意大小的图片的加入

  • 相关阅读:
    寒假瞎搞系列(5)
    《亿级用户下的新浪微博平台架构》阅读笔记
    《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》阅读笔记
    《游戏服务器的架构演进(完整版)》阅读笔记
    阅读架构漫谈(四)笔记
    阅读架构漫谈(三)笔记
    阅读架构漫谈(二)笔记
    以《淘宝网》为例,描绘质量属性的六个常见属性场景
    阅读架构漫谈(一)笔记
    假期周进度总结2
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/15012290.html
Copyright © 2020-2023  润新知