日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS 简单实现公告消息自动逐条切换

發布時間:2025/3/21 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS 简单实现公告消息自动逐条切换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JS實現公告消息滾動

因為要適配iOS前端,所以在想最簡實現一個靜態數據的抽獎滾動欄,研究時直接用了當前運行的ReactJS框架實現,于是昨天先打了個草稿。經測試在iPhone6S Plus A1699 Version 12.1.2上顯示正常。

import React from 'react'class ScrollMessagePage {componentDidMount() {//消息關鍵字數據const loanUserList = ['趙', '錢', '孫', '宋', '王', '徐', '丘', '駱', '高', '夏', '蔡', '田', '樊', '胡', '陳', '霍', '潘', '萬', '李', '洪', '莫', '王']const loanMoneyList = [10, 12, 8, 5, 8, 7, 6, 23, 18, 10, 2, 1]const loanSexList = ['先生', '先生', '先生', '女士', '女士']function getText() {const randomSex = loanSexList[parseInt(Math.random() * loanSexList.length)]const randomName = loanUserList[parseInt(Math.random() * loanUserList.length)]const randomMoney = loanMoneyList[parseInt(Math.random() * loanMoneyList.length)]return randomName + randomSex + '獲得' + randomMoney + '元紅包'}let messageList = []for (let i = 0; i < 3; i++) {messageList.push(getText())}let box = document.getElementById('scroll-message')box.style.height = '30px'box.style.overflow = 'hidden'function createElement(text) {let Text = document.createElement('div')Text.style.height = '30px'Text.style.transition = 'margin-top 1s'Text.innerText = textbox.appendChild(Text)}messageList.map(text => {createElement(text)})this.timer = setInterval(() => {createElement(getText())box.childNodes[1].style.marginTop = '-30px'box.removeChild(box.childNodes[0])}, 3000)}componentWillUnMount() {clearInterval(this.timer)}render() {return (<div className="match"><div id="scroll-message"/></div>)}}export default ScrollMessagePage

經過今天的測試發現,在第一次加載計時器的時候滾動條會將滾動數據第二條數據快速跳過,造成不好的用戶體驗,另外頻繁的操作DOM也會造成性能損耗,于是使用了文檔碎片對滾動條進行優化

let box = document.getElementById('scroll-message')let fragement = document.createDocumentFragment('div')let message = document.createElement('div')message.style.height = '30px'message.style.overflow = 'hidden'fragement.appendChild(message)function createElement(text, style, ele = message) {let Text = document.createElement('div')Text.style.height = '30px'Text.style.lineHeight = '30px'Text.style.transition = 'margin-top 1s'style && Object.keys(style).map(key => Text.style[key] = style[key])Text.innerText = textele.appendChild(Text)}let messageList = []for (let i = 0; i < 2; i++) {messageList.push(getText())}messageList.map((text, index) => createElement(text, index===0?{marginTop:'-30px'}:null))this.timer = setInterval(() => {createElement(getText())message.childNodes[1].style.marginTop = '-30px'message.removeChild(message.childNodes[0])}, 3000)box.appendChild(fragement)

【如何修復數據跳過BUG】此次更新修復了滾動條在第一次計時器運行時跳過第二條數據的問題,發生問題的原因是因為初始化公告欄數據的時候并未添加marginTop,在計時器執行之后第二條數據原本會替換第一條數據的位置,然而因為第一條數據被刪除所以跑到第一條數據位置上面,我通過直接將第二條數據初始化到第一條數據的位置解決了該問題。

【處理性能損耗】使用計時器頻繁對dom進行操作,會使整個頁面頻繁進行DOM渲染,解決性能損耗的問題我參考 createDocumentFragment();方法實現,將該公告欄DOM插入到該方法創建的文檔碎片,將子元素插入到文檔片段時不會引起頁面回流。

小結

初次向大家分享我的想法,有更好的實現方法可以評論留言,關于性能損耗的問題我認識有些不足,請大家多多指教。

總結

以上是生活随笔為你收集整理的JS 简单实现公告消息自动逐条切换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品一区在线观看视频 | 粉嫩av网址| 精品一久久| 特级黄毛片 | 少妇又紧又深又湿又爽视频 | av网站一区| 精品国产乱码久久久久久久软件 | 国产欧美一区二区三区视频 | 五月天在线 | 国产熟女一区二区丰满 | 国产农村妇女精品一区 | 小俊大肉大捧一进一出好爽 | 人妻久久久一区二区三区 | 免费国产黄色 | 久久精品国产一区二区 | 国产高清一 | 免费av在 | 三级在线看中文字幕完整版 | 精品久久免费视频 | 黑鬼巨鞭白妞冒白浆 | 窝窝视频在线 | 国产精品视频一区二区三区, | 日韩午夜视频在线 | 黄色网址中文字幕 | 中国丰满老太hd | 美女扒开尿口给男人捅 | 秋霞在线一区 | 少妇一晚三次一区二区三区 | 免费的黄色网址 | 精品动漫一区二区三区在线观看 | 又黄又爽视频在线观看 | 国产特黄级aaaaa片免 | 动漫美女舌吻 | 欧美日本道 | 女优色图 | 国产成人在线免费观看视频 | 浪漫樱花在线观看高清动漫 | 日韩欧美亚洲视频 | 亚洲高潮av | 毛片无码一区二区三区a片视频 | 欧美少妇精品 | 女人私密又肥又大 | 国产又黄又大又爽 | 极品销魂美女一区二区 | 草比视频在线观看 | 今天高清视频在线观看视频 | 天堂网2020 | 天堂视频中文在线 | 欧美激情在线 | 蜜臀av在线免费观看 | 亚洲综合一二三 | 波多野结衣视频播放 | 精品国产乱子伦一区二区 | 国产在线视频福利 | 樱花av在线 | 在线h网站 | 国产精品高潮呻吟 | 99久久久无码国产精品免费 | 国产性生活一级片 | 久久久精品人妻一区二区三区色秀 | 成人在线视频播放 | 自拍三级视频 | 国精品人妻无码一区二区三区喝尿 | 成人在线综合网 | 黄色片一区| 日本熟妇一区二区三区 | 国产精品久久久久久一区二区 | 天天插天天干 | 久久精品一区 | 中日韩黄色大片 | 一级片在线视频 | 99久久久国产 | 日韩综合色 | 800av在线视频 | 亚洲精选国产 | 欧美群妇大交群 | 国产福利短视频 | 操日本老太太 | 日韩视频免费播放 | 成人黄色激情小说 | 国产精品av一区 | 国产区一二 | 国产午夜大地久久 | 国产色一区 | 女人的天堂av | 欧美黄大片 | 轻点好疼好大好爽视频 | 久久久久久久毛片 | 国产在线视频你懂的 | 国产草草影院ccyycom | 丰满人妻一区二区三区性色 | 欧美日韩亚洲色图 | 91亚洲国产成人久久精品麻豆 | 亚洲二区在线观看 | 日韩欧美一区二 | com国产 | 国产一区二区精华 | 初尝黑人巨炮波多野结衣 | 与子敌伦刺激对白播放的优点 |