js实现弹幕功能

要点:

  • 布局:输入框、提交按钮、弹幕区域
  • 创建弹幕,并获取到它的相关属性,如颜色。。。。
  • 弹幕的颜色随机
  • 高度随机
  • 距离左边边框距离,实时变化 (难点)
  • 弹幕文字不换行 (white-space:nowrap)
    我能想到的 大概就这么多吧。附上完整代码,代码注释解释得差不多了,
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
</head>
<style type="text/css">
	#box{
		width: 500px;
		height: 500px;
		border:2px solid red;
	}

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

<script type="text/javascript">
function $(str) {  //这个方法的参数为一个str,然后返回一个id为str的控件对象
 return document.getElementById(str);
}
function send() {
 var word = $('txt').value; //我们要拿到input框里面的内容  $('text')相当于getElementById
 var span = document.createElement('span');
 var top = parseInt(Math.random() * 500) - 20;  //②高度随机
 var color1 = parseInt(Math.random() * 256); // ①颜色随机 每种颜色有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;//yanse
 span.style.left = '500px';  //③与左边框的距离;
 span.style.whiteSpace = 'nowrap';  //文本不进行换行
 var nub = (Math.random() * 100) + 1;
 span.setAttribute('speed', nub);   //setAttribute就是给span添加了一个speed的属性,值为nub 随机速度;
 span.speed = nub;
 span.innerHTML = word; //innerHTML在JS:①获取对象的内容$('x').innerHTML 或 ②向对象插入内容(此处是插入);
 $('box').appendChild(span);  //把span内容追加到p里 
 $('txt').value = "";  //提交后清除输入框的文字
}
setInterval(move, 200);//③起,setInterval要求第一个参数必须是含Javascript命令的字符串或函数对象。
//move()和move是不相同的,move()是语句,表示要立即执行这个函数的意思;move则是一个函数对象,代表了这个函数本身,本身是不会运行的,可以把它赋值给其他对象或作为其他函数的参数。
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';//与左边框的距离实时变化;③止
 }
}
</script>
</body>
</html>

懒得传动图,静态图将就着看一下
移动的速度也不一样
在这里插入图片描述

参考网址:php中文网,具体网址找不到了在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值