当前位置: 首页 > backend >正文

关于在html页面利用js操作liMarquee以及解决使用过程中出现的问题,附全屏切换相关代码

1. 基本使用

  1. 引入插件以及css
<script type="text/javascript" src="js/jquery.js"></script>
<link rel="stylesheet" href="./css/liMarquee.css">
<script type="text/javascript" src="js/jquery.liMarquee.js"></script>
  1. 页面渲染
<div class="scroll" style="height: calc(100% - 20px);"><ul id="data_ul"></ul>
</div>

当页面刷新后执行以下代码,liMarquee具体配置参考:前往链接
下面代码的执行逻辑是:

const scrollConfig = {direction: 'up', // 滚动方向runshort: false, //内容不足时不滚动scrollamount: 20, // 滚动速度loop: -1 // 无限循环
}
$('.scroll').liMarquee(scrollConfig); // 开始执行滚动
updateScroll(); // 更新滚轮数据(初始数据一般通过接口拿历史数据)
function updateScroll() {const data = [{placeName: 'place1', monitorName: '温度', monitorValue: value1 + '℃'},{placeName: 'place2', monitorName: '湿度', monitorValue: value2 + '%'},{placeName: 'place3', monitorName: '压差1', monitorValue: value3 + 'Pa'},{placeName: 'place4', monitorName: '压差2', monitorValue: value4 + 'Pa'},{placeName: 'place5', monitorName: '压差3', monitorValue: value5 + 'Pa'}];const ul = document.getElementById('data_ul');data.forEach(item => {const row = document.createElement("li");row.innerHTML = `<span>${item.placeName}</span><span>${item.monitorName}</span><span>${item.monitorValue}</span>`;ul.appendChild(row);});$('.scroll').liMarquee('update');
}

2. 对接WebSocket

上面代码写好后,对接WebSocket推来的数据就容易对滚轮的数据实时刷新了

ws.onmessage = function (event) {const receivedData = JSON.parse(event.data);if (receivedData) {value1 = receivedData.value1;value2 = receivedData.value2;value3 = receivedData.value3;value4 = receivedData.value4;value5 = receivedData.value5;updateScroll(); // 推一次数据就更新滚轮}
}

3. 修复全屏切换导致卡顿

场景:点击全屏切换按钮时,切换全屏状态,但是切换时会导致滚轮卡顿。
解决:监听全屏状态,对liMarquee进行销毁和重置。

document.addEventListener('fullscreenchange', () => {const scroll = $('.scroll')scroll.liMarquee('destroy'); // 销毁liMarqueescroll.liMarquee(scrollConfig); // 重新滚动document.querySelector('.scroll').style.height = 'calc(100% - 20px)' // 重置高度updateScroll(); // 更新数据
});

全屏切换,如果使用的是Vue框架,可以参考此链接,实现起来更加简单。

const screenBtn = document.getElementById('screen-btn');
screenBtn.addEventListener("click", () => toggleFullScreen());function toggleFullScreen() {if (!!(document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement)) {if (document.exitFullscreen) {document.exitFullscreen();} else if (document.mozCancelFullScreen) {document.mozCancelFullScreen();} else if (document.webkitCancelFullScreen) {document.webkitCancelFullScreen();} else if (document.msExitFullscreen) {document.msExitFullscreen();}} else {const element = document.documentElement; if (element.requestFullscreen) {element.requestFullscreen()} else if (element.mozRequestFullScreen) {element.mozRequestFullScreen();} else if (element.webkitRequestFullScreen) {element.webkitRequestFullScreen();} else if (element.msRequestFullscreen) {element.msRequestFullscreen();}}
}
http://www.xdnf.cn/news/15117.html

相关文章:

  • LINUX710 MYSQL
  • Oracle大表数据清理优化与注意事项详解
  • 深入理解机器学习
  • 无人机识别比赛记录与分析
  • CentOs 7 MySql8.0.23之前的版本主从复制
  • ESP32- 项目应用1 智能手表 #1
  • 2025.07.09华为机考真题解析-第三题300分
  • 开源!RAG竞技场(3):语义分割的RAG(Semantic Chunking RAG)
  • 解释sync.WaitGroup的用途和工作原理。在什么情况下应该使用它?
  • XSS(ctfshow)
  • Camera2API笔记
  • 创建本地软件仓库(rhel7与rhel9)
  • [C#] 使用TextBox换行失败的原因与解决方案:换用RichTextBox的实战经验
  • JavaScript 树形菜单总结
  • Datawhale AI 夏令营:基于带货视频评论的用户洞察挑战赛 Notebook(下篇)
  • git中的fork指令解释
  • 第1讲:C语言常见概念
  • 【NVIDIA-H100-UFM故障分析实战】GPU 节点反复 “掉线又上线“?300 条日志揪出 InfiniBand 链路抖动真凶
  • SYM32第二十天 ESP8266-01S和电脑实现串口通信(3)
  • 深入理解Java虚拟机:Java内存区域与内存溢出异常
  • RMSNorm/LayerNorm原理/图解及相关变体详解
  • 2025企业私有化知识库工具选型指南——标普智元深度解读
  • 谷粒商城高级篇
  • FPGA设计思想与验证方法系列学习笔记001
  • 数组的应用示例
  • 【前端】jQuery数组合并去重方法总结
  • [论文阅读]Text Compression for Efficient Language Generation
  • 无缝矩阵与普通矩阵的对比分析
  • 「按键精灵安卓/ios辅助工具」动态验证码该怎么得到完整的图片
  • 电脑被突然重启后,再每次打开excel文件,都会记录之前的位置窗口大小,第一次无法全屏显示。