最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JavaScript實現(xiàn)絲滑文字滾動詳細代碼

 更新時間:2026年05月22日 08:26:23   作者:技術(shù)喵貓巷  
在網(wǎng)頁開發(fā)中,增強用戶體驗是非常重要的一個部分,想象一下如果你的網(wǎng)頁標(biāo)題欄能夠展示動態(tài)的、滾動的文本,這將會吸引訪客的目光并增加其興趣,這篇文章主要介紹了使用JavaScript實現(xiàn)絲滑文字滾動的相關(guān)資料,需要的朋友可以參考下

前言

公告欄、彈幕、股票 ticker……垂直文字滾動是前端最常見的動效之一。本文用純原生代碼拆解一條「克隆 + 逐幀滾動」的實現(xiàn)思路,涵蓋布局、滾動、邊界銜接三大要點,開箱即用,零依賴零配置。

效果預(yù)覽

一、布局:一行標(biāo)題 + 一條列表

HTML 極簡骨架:

<div class="container">
  <h1 class="title">最新公告</h1>
  <ul class="list">
    <li>把大象裝冰箱總共分幾步?</li>
    <li>1. 鄧哥打開冰箱門</li>
    <li>2. 鄧哥把大象放進去</li>
    <li>3. 鄧哥關(guān)上冰箱門</li>
  </ul>
</div>

CSS 只做兩件事:

  • .container 負責(zé)背景色與水平排版
  • .list 固定高度并隱藏溢出內(nèi)容,為滾動做準備

二、核心算法:克隆 + 逐幀滾動

1.克隆首項 —— 無縫銜接的秘訣

當(dāng)最后一項滾動到可視區(qū)后,必須立即回到第一項而不閃屏。最簡單做法:把第一項克隆一份追加到列表末尾。這樣「最后一項」和「第一項」之間永遠有一條平滑過渡。

const list = document.querySelector('.list');
const firstItem = list.children[0].cloneNode(true);
list.appendChild(firstItem);

2.逐幀滾動 —— 手寫 Easing

瀏覽器原生 scrollTop 沒有動畫,我們用 setInterval 在 300 ms 內(nèi)完成一次 30 px 的位移動畫:

let curIndex = 0;
const itemHeight = 30;
const duration = 300; // 動畫耗時
const interval = 10;  // 每幀間隔
const dis = itemHeight / (duration / interval);

function moveNext() {
  let from = curIndex * itemHeight;
  let to = (curIndex + 1) * itemHeight;
  let timer = setInterval(() => {
    from += dis;
    if (from >= to) {
      clearInterval(timer);
      curIndex++;
      // 到達克隆項時瞬間歸零,形成無縫循環(huán)
      if (curIndex === list.children.length - 1) {
        curIndex = 0;
        list.scrollTop = 0;
      }
    } else {
      list.scrollTop = from;
    }
  }, interval);
}

三、邊界處理:回到起點不閃屏

當(dāng) curIndex 等于克隆項索引時,立即把 scrollTop 設(shè)為 0,人眼幾乎察覺不到跳變,從而形成無限循環(huán)。

四、一行命令替換內(nèi)容

只要保持每條文本高度一致,替換 <ul>innerHTML 即可熱插播新公告,無需重啟動畫邏輯。

總結(jié)

「克隆第一項 + 逐幀滾動」是公告欄場景下最輕量的無限循環(huán)方案,可讓文字像膠片一樣永遠滾動,不閃、不抖、不掉幀。

到此這篇關(guān)于使用JavaScript實現(xiàn)絲滑文字滾動詳細代碼的文章就介紹到這了,更多相關(guān)JS絲滑文字滾動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

响水县| 大庆市| 根河市| 浦东新区| 西充县| 富裕县| 四平市| 溧阳市| 辽阳市| 禹城市| 无为县| 曲松县| 贡觉县| 阳东县| 蒙山县| 镇沅| 屏边| 河池市| 灵璧县| 长春市| 寿阳县| 都江堰市| 岐山县| 马尔康县| 临清市| 屯留县| 蓬安县| 东海县| 宜丰县| 桂林市| 道真| 宣汉县| 安远县| 博客| 平顶山市| 通化县| 乐陵市| 洛隆县| 屯留县| 景德镇市| 和政县|