原生js实现文字循环向上滚动效果

该文章介绍如何用JavaScript实现文字循环向上滚动的效果,通过设置CSS样式隐藏超出部分,然后利用JS动态改变scrollTop属性,当滚动到一定位置时克隆并添加内容,以实现无缝滚动。同时,文章提供了一个简单的HTML结构和相应的JS代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原生js实现文字循环向上滚动效果

css样式 (最外层的div的高度不要太高,也不要正好包含内容区域的高度,最好比内容区域高度低点,产生滚动条)

   #scrollArea {
        width: 400px; 
        height: 150px; 
        border: 2px solid blue; 
        overflow: hidden
      }

html结构部分

   <div id="scrollArea">
      <ul>
        <li>生存,就是最谨慎的战斗。</li>
        <li>到达胜利之前,无法回头。</li>
        <li>净化的终点是自我毁灭。</li>
        <li>没有永恒的朋友,只有永恒的利益。</li>
        <li>不能击败我的,会让我更强大。</li>
        <li>静如影,疾如风。不动如山,迅烈如火。</li>
        <li>别在来不及的时候后悔。</li>
        <li>最好的剑,永远是下一把。</li>
      </ul>
    </div>

js部分

/**
       * scrollTop  (滚动的高度既能‘设置'滚动值,也能‘获取'滚动值)
       * clientHeight 元素的像素高度,包含元素的高度+内边距,不包含水平滚动条,边框和外边距
       * scrollHeight 元素内容的高度,包括溢出的不可见内容
       */
      //时间间隔
      var delay = 50
      //定时器任务
      var handler = function () {
        //向上移动1px
        $('#scrollArea').scrollTop = $('#scrollArea').scrollTop + 1
        if (Math.ceil($('#scrollArea').clientHeight + $('#scrollArea').scrollTop) >= $('#scrollArea').scrollHeight) {
          var ulCopy = $('#scrollArea').firstElementChild.cloneNode(true)
          $('#scrollArea').append(ulCopy)
          //当克隆的ul达到一定数量时,删除第一个ul
          if (document.getElementsByTagName('ul') && document.getElementsByTagName('ul').length >= 3) {
            $('#scrollArea').removeChild($('#scrollArea').firstElementChild)
          }
        }
      }
      //启动定时器
      setInterval(handler, delay)
      function $(selector) {
        return document.querySelector(selector)
      }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值