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

原生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)
      }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现列表内容自动向上滚动效果,可以使用原生JavaScript来操作DOM元素和定时器。 首先,可以通过getElementById或querySelector等方法获取到包含列表内容的元素。 然后,通过获取元素的高度、内容等信息来判断是否需要滚动。 接着,可以利用定时器setInterval来不断改变元素的scrollTop属性值,实现滚动效果。 具体步骤如下: 1. 首先,获取到包含列表内容的元素: ```javascript var listContainer = document.getElementById("listContainer"); //或者使用querySelector根据CSS选择器选择元素: var listContainer = document.querySelector("#listContainer"); ``` 2. 判断是否需要滚动,比如当元素内容的高度大于元素本身的高度时才需要滚动: ```javascript if(listContainer.scrollHeight > listContainer.clientHeight){ // 需要滚动,执行后续操作 } ``` 3. 设置定时器,不断改变元素的scrollTop属性值,实现滚动效果: ```javascript var isScrolling = true; // 表示是否正在滚动 setInterval(function(){ if(isScrolling){ listContainer.scrollTop += 1; // 每次滚动1个像素,可根据需要调整滚动速度 if(listContainer.scrollTop === (listContainer.scrollHeight - listContainer.clientHeight)){ listContainer.scrollTop = 0; // 滚动到底部后,回到顶部 } } }, 50); // 每50毫秒滚动一次,可根据需要调整滚动速度 ``` 4. 可以添加一些事件来控制滚动的开始和停止,比如鼠标进入和离开时暂停和恢复滚动效果: ```javascript listContainer.onmouseover = function(){ isScrolling = false; // 鼠标进入时停止滚动 } listContainer.onmouseout = function(){ isScrolling = true; // 鼠标离开时恢复滚动 } ``` 以上就是用原生JavaScript实现列表内容自动向上滚动效果的基本步骤。根据具体需求,还可以进行一些定制和调整,比如添加缓动效果、点击按钮控制滚动等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值