jQuery写一个简单的弹幕墙
概述
近几年由于直播,弹幕流行起来,之前看到过用js制作弹幕墙的思路,觉得很有趣。自己就花了点时间把他做成了更灵活的jQuery插件,现在分享出来。
详细
1、此插件逻辑简单,注释清晰,下载及用
2、如果读者能理解源码当然更好
3、读者可以根据实际需要修改样式或布局
一、准备工作
1、主流浏览器(非ie),ie9+
2、掌握html、css、js基础
二、实现思路
1、文件结构
bullet-screen.js:插件主js
bullet_screen.css:样式文件
index.html:运行入口文件
jquery-1.9.1.min.js:jQuery文件(版本没有要求)
2、页面布局
一个弹幕墙容器接收弹幕
一个文本框输入弹幕
一个发送按钮 一个清屏按钮
3、主要代码
html部分代码
1 2 3 4 5 6 7 8 9 10 | < body > < div class="container"> </ div > < div class="menu-bar"> < input type="text" placeholder="弹幕内容" id="bullet-text"/> < span class="btn send">发送弹幕</ span > < span class="btn close">关闭弹幕</ span > </ div > </ body > |
css代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | .container{ width : 1000px ; margin : 100px auto ; background : #e8e8e8 ; height : 500px ; border-radius: 5px ; border : 1px solid #ddd ; position : relative ; overflow : hidden ; } .menu-bar{ width : 1000px ; margin : 0px auto ; text-align : center ; } .btn{ padding : 5px 20px ; display : inline- block ; border-radius: 3px ; border : 1px solid #e0e0e0 ; margin : 15px ; background : #37a ; color : #fff ; cursor : pointer ; } |
js主要代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | ( function ($){ $.bulletScreen={ timers:[], //定时数组 /** * 添加弹幕 * @param odiv 当前弹幕元素 * @param container 弹幕墙容器 */ add: function (odiv,container){ odiv.css({ //定义弹幕元素的基本样式 position: 'absolute' , fontSize: '20px' , display: 'block' , whiteSpace: 'nowrap' }); var r = Math.floor(Math.random() * 254); var g = Math.floor(Math.random() * 254); var b = Math.floor(Math.random() * 254); odiv.css({ //定义弹幕元素的随机样式(top位置,颜色) color: "rgb(" + r + "," + g + "," + b + ")" , top: (Math.floor(Math.random() * container.height())-24) + "px" , width:odiv.width(), right: 0 }); container.append(odiv); this .move(odiv,container); }, /** * 暴露给外层调用的方法 * @param val 弹幕内容 * @param container 弹幕墙容器 */ send: function (val,container){ var odiv = $( "<div class='bullet'></div>" ); //创建弹幕元素 odiv.html(val); this .add(odiv,container); }, /** * 定时改变弹幕的位置(right+1),到达左侧时清除弹幕,清除定时任务 * @param odiv 当前弹幕元素 * @param container 弹幕墙容器 */ move: function (odiv,container){ var i = 0; var timer = setInterval( function () { odiv.css({ right: (i += 1) + "px" }); if ((odiv.offset().left + odiv.width()) < container.offset().left) { odiv.remove() clearInterval(timer) } }, 10); this .timers.push(timer); }, /** * 清除弹幕墙上的所有弹幕 * @param container 弹幕墙容器 */ clear: function (container){ for ( var i = 0; i < this .timers.length; i++) { //遍历定时素组,清除所有定时任务 clearInterval( this .timers[i]) } container.find( '.bullet' ).remove(); } } })(jQuery); |
三、运行效果
四、兼容性
主流浏览器(非ie),ie9+
五、其他补充
1、在浏览器中运行index.html及可
2、涉及jQuery插件开发的知识
3、demo提供了主要思路,具体要根据实际做相应修改,有不足之处欢迎指正
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?