js实现上下无缝滚动(不卡顿)

效果图如下:


代码如下:
html 复制代码
<!DOCTYPE html>
<html lang="en">
<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>
        * {
            padding: 0;
            margin: 0;
        }

        .out-box {
            margin: 100px auto;
            width: 600px;
            height: 300px;
            border: 1px solid #f29634;
            overflow: hidden;
        }

        .list .item {
            width: 500px;
        }

        .list .item {
            margin-bottom: 30px;
        }

        .list .item .top {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .top .top-left {
            flex: 1;
        }

        .top .top-left .num {
            color: #f29634;
            font-size: 20px;
            padding-right: 10px;
        }

        .bottom {
            position: relative;
            width: 100%;
            height: 2px;
            background: #f29634;
            margin-top: 20px;
        }

        .bottom::after {
            position: absolute;
            content: "";
            width: 80%;
            height: 10px;
            bottom: 5px;
            background: #f29634;
        }
    </style>
</head>

<body>
    <div class="out-box" id="demo">
        <div class="list" id="demo1">
            <div class="item">
                <div class="top">
                    <div class="top-left">
                        <span class="num">No.1</span>
                        <span>宝娟</span>
                    </div>
                    <div class="top-right">
                        我嗓子痛
                    </div>

                </div>
                <div class="bottom"></div>
            </div>
            <div class="item">
                <div class="top">
                    <div class="top-left">
                        <span class="num">No.2</span>
                        <span>宝娟</span>
                    </div>
                    <div class="top-right">
                        我嗓子痛
                    </div>

                </div>
                <div class="bottom"></div>
            </div>
            <div class="item">
                <div class="top">
                    <div class="top-left">
                        <span class="num">No.3</span>
                        <span>宝娟</span>
                    </div>
                    <div class="top-right">
                        我嗓子痛
                    </div>

                </div>
                <div class="bottom"></div>
            </div>
            <div class="item">
                <div class="top">
                    <div class="top-left">
                        <span class="num">No.4</span>
                        <span>宝娟</span>
                    </div>
                    <div class="top-right">
                        我嗓子痛
                    </div>

                </div>
                <div class="bottom"></div>
            </div>
            <div class="item">
                <div class="top">
                    <div class="top-left">
                        <span class="num">No.5</span>
                        <span>宝娟</span>
                    </div>
                    <div class="top-right">
                        我嗓子痛
                    </div>

                </div>
                <div class="bottom"></div>
            </div>
            <div class="item">
                <div class="top">
                    <div class="top-left">
                        <span class="num">No.6</span>
                        <span>宝娟</span>
                    </div>
                    <div class="top-right">
                        我嗓子痛
                    </div>

                </div>
                <div class="bottom"></div>
            </div>
        </div>
        <div class="list" id="demo2"></div>
    </div>
    <script>
        var speed = 10
        var _demo = document.getElementById("demo");
        var _demo1 = document.getElementById("demo1");
        var _demo2 = document.getElementById("demo2");
        demo2.innerHTML = demo1.innerHTML
        function Marquee() {
           
            if (_demo2.offsetTop - _demo.scrollTop-_demo.offsetTop <= 0) {
                // _demo.scrollTop -= (_demo1.offsetHeight + (_demo1.offsetHeight - _demo.offsetHeight) )
                _demo.scrollTop = 0
                console.log('<0:'+ _demo.scrollTop);
            } else {
                _demo.scrollTop++
                // console.log('>0:'+ _demo.scrollTop);
            }
        }
        var MyMar = setInterval(Marquee, speed)
        _demo.onmouseover = function () { clearInterval(MyMar) }
        _demo.onmouseout = function () { MyMar = setInterval(Marquee, speed) }
    </script>
</body>

</html>
相关推荐
Setsuna_F_Seiei3 小时前
前端的 AI 学习之路 01 之 Agent API 调用 - 和 Agent 的基础对话
前端·人工智能·ai编程
threerocks4 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
徐小夕4 小时前
3分钟从想法到Agent上线:我们开源了一款AI可视化工作流“IDE”
前端·算法·github
ly76895 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
why技术6 小时前
eli5,我觉得这个全网在吹的技能,使用体验真的很一般啊。
前端·人工智能·后端
excel6 小时前
记录升级 nuxt3 到 nuxt4 记录
前端
剑胆琴心静水深流6 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
前端snow6 小时前
ai agent -- Memory汇总
前端
ITresearchGuest7 小时前
AI 焦虑下,前端该何去何从
前端·人工智能
沙盘客7 小时前
AFSIM 示例解读(03)· 六自由度飞行仿真 six_dof(下):机场运作与弹道导弹投送
java·javascript·经验分享