原生HTML实现marquee向上滚动效果

实现原理:借助CSS3中animation动画以及原生JS克隆API

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>文字向上滚动效果</title>
    <style>
      .marquee-view {
        width: fit-content;
        height: 300px;
        background-color: #000;
        overflow: hidden;
      }

      .row {
        display: flex;
        justify-content: space-between;
        line-height: 1.05;
        color: #ffffff;
        padding: 15px;
        cursor: pointer;
      }

      .marquee {
        animation: move 5s linear infinite;
      }

      @keyframes move {
        0% {
          transform: translateY(0);
        }
        100% {
          transform: translateY(-50%);
        }
      }
    </style>
  </head>
  <body>
    <div class="marquee-view">
      <div class="marquee">
        <div class="row">
          <span>我是滚动文字</span>
        </div>
        <div class="row">
          <span>我是滚动文字</span>
        </div>
        <div class="row">
          <span>我是滚动文字</span>
        </div>
        <div class="row">
          <span>我是滚动文字</span>
        </div>
        <div class="row">
          <span>我是滚动文字</span>
        </div>
        <div class="row">
          <span>我是滚动文字</span>
        </div>
        <div class="row">
          <span>我是滚动文字</span>
        </div>
      </div>
    </div>
  </body>

  <script>
    const marquee = document.querySelectorAll(".marquee-view .marquee");
    marquee.forEach((item) => {
      var rows = item.children;
      // 克隆子节点并将其附加到 .marquee 元素中
      Array.from(rows).forEach((row) => {
        var clone = row.cloneNode(true);
        item.appendChild(clone);
      });
    });
  </script>
</html>

实现效果:

相关推荐
r***86981 分钟前
Redis 6.2.7安装配置
前端·数据库·redis
ssshooter5 分钟前
传参优于外部变量
前端·后端·面试
小小小小宇25 分钟前
处理耗时较长的任务笔记
前端
消失的旧时光-194336 分钟前
Flutter Scaffold 全面解析:打造页面骨架的最佳实践(附场景示例 + 踩坑分享)
前端·flutter
三门38 分钟前
开源版扣子私有化部署
前端
麦麦大数据1 小时前
F048 体育新闻推荐系统vue+flask
前端·vue.js·flask·推荐算法·体育·体育新闻
风止何安啊1 小时前
JS 对象:从 “散装” 到 “精装” 的晋级之路
前端·javascript·node.js
Bug快跑-11 小时前
Java、C# 和 C++ 并发编程的深度比较与应用场景
java·开发语言·前端
Achieve前端实验室1 小时前
【每日一面】如何解决内存泄漏
前端·javascript·面试
小肚肚肚肚肚哦1 小时前
🎮 从 NES 到现代 Web —— 像素风组件库 Pixel UI React 版本,欢迎大家一起参与这个项目
前端·vue.js·react.js