JavaScript 实现简单弹幕效果教程

作者:异步漫步

时间:2026-10-22

浏览:158

本文介绍如何使用原生 JavaScript 实现一个简单的网页弹幕功能。通过获取输入框内容,动态创建元素并赋予随机颜色、高度及向左滚动的样式,利用定时器更新位置实现滚动效果。代码结构简洁,适合前端初学者学习 DOM 操作与基础动画原理。

文章目录

弹幕效果简介与HTML结构

大家是否体会到,弹幕呈现出独特的观赏趣味!

尽管我个人对观看电视时出现的弹幕干扰持保留态度,但今日我们将构建一个简易的弹幕系统。其简化程度可参考以下演示效果:

弹幕效果简介与HTML结构

从图示可见,该呆毛HTML结构极为精简。 仅包含一个div元素、一个input输入框以及一个button按钮。


 <div id="box" class="box"></div>
 <input type="text" id="txt" />
 <button onclick="send()">提交内容</button>

首先展示JavaScript代码实现:

JavaScript 核心逻辑与实现


 function $(str) {
 return document.getElementById(str);
 }
 function send() {
 var word = $('txt').value;
 var span = document.createElement('span');
 var top = parseInt(Math.random() * 500) - 20;
 var color1 = parseInt(Math.random() * 256);
 var color2 = parseInt(Math.random() * 256);
 var color3 = parseInt(Math.random() * 256);
 var color = "rgb(" + color1 + "," + color2 + "," + color3 + ")";
 top = top < 0 ? 0 : top;
 span.style.position = 'absolute';
 span.style.top = top + "px";
 span.style.color = color;
 span.style.left = '500px';
 span.style.whiteSpace = 'nowrap';
 var nub = (Math.random() * 10) + 1;
 span.setAttribute('speed', nub);
 span.speed = nub;
 span.innerHTML = word;
 $('box').appendChild(span);
 $('txt').value = "";
 }
 setInterval(move, 200);
 function move() {
 var spanArray = $('box').children;
 for (var i = 0; i < spanArray.length; i++) {
  spanArray[i].style.left =
  parseInt(spanArray[i].style.left) - spanArray[i].speed + 'px';
 }
 }

简要阐述其核心逻辑:

首先,获取input输入框中的文本内容,代码为var word = $('txt').value; 其次,需将该内容插入至负责滚动显示的div容器中,遵循三项基本原则:①颜色随机生成②垂直高度随机③与左侧边框的距离随时间动态变化; 最后,将生成的内容节点追加至div元素中 $('box').appendChild(span);

基于上述步骤分析,第二步的实现最为关键。

针对第一个原则的具体实现:


 var color1 = parseInt(Math.random() * 256);
 var color2 = parseInt(Math.random() * 256);
 var color3 = parseInt(Math.random() * 256);
 var color = "rgb(" + color1 + "," + color2 + "," + color3 + ")";
 span.style.color = color;

相关扩展知识:

RGB(R,G,B)色彩模式; R: 代表红色分量。取值范围为正整数或百分数 G: 代表绿色分量。取值范围为正整数或百分数 B: 代表蓝色分量。取值范围为正整数或百分数 此定义应易于理解。

针对第二个原则的具体实现:


var top = parseInt(Math.random() * 500) - 20;
top = top < 0 ? 0 : top;
span.style.top = top + "px";

针对第三个原则的具体实现:


 span.style.left = '500px';
 setInterval(move, 200);
 function move() {
 var spanArray = $('box').children;
 for (var i = 0; i < spanArray.length; i++) {
  spanArray[i].style.left =
  parseInt(spanArray[i].style.left) - spanArray[i].speed + 'px';
 }
 }

此处运用了定时器机制,使left属性值发生实时变更。

至此,整体逻辑应当已清晰易懂。

本文所述内容至此结束,期望对各位的学习有所助益,同时也恳请大家继续支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章