js滚动弹幕

滚动弹幕

滚动弹幕


1.用randomColor随机生成颜色
2.获取input的value值将其转化为弹幕的内容
3.在js中设置不同的随机数并增长合适倍数后赋予文本的style属性从而获得不同颜色,大小,位置高度不同的弹幕

HTML

<div class="main"id="main">
</div>  
<div class="submit">
<input  id="input"type="text" placeholder="请输入弹幕内容" />
<button id="button">发送</button>
</div>

CSS

* {
 padding: 0;
 margin: 0;
}
html, body {
 height: 100%;
 font-size: 16px;
}
.main {
 height: 100%;
 border:1px solid black ;
 background-color: #000000;
 position: relative;
 overflow: hidden;
 color:red;
}
.main span {
 position: absolute;
 left: 100%;
 width: 100%;
}

JS

获取第一个class属性值为main的元素。

var mainContent = document.querySelector('.main')
//获取第一个class属性值为main的元素。
var submitButton = document.querySelector('button')
//获取第一个button元素对象。
var inputText = document.querySelector('input')
//获取第一个input元素。
submitButton.onclick = function () {
 randomText();
}
function randomText() {
var text = inputText.value;
//获取文本空发送的文本内容。
var length = text.length;
//获取文本的长度
var p = document.createElement('span');
//创建一个span元素
p.style.color = randomColor();
//设置文本的颜色。
var random = randomFontSize(1, 3);
//获取字体大小。
p.style.fontSize = random + 'rem';
//设置字体的大小。
var randomHeight = randomFontSize(0, (document.body.clientHeight - 10 * 16));
//计算出span元素的margin-top。
p.style.marginTop = randomHeight + 'px';
//设置span元素的margin-top值。
p.innerText = text;
//将文本内容写入span元素。
mainContent.appendChild(p);
//将span元素添加到弹幕区域。
var i = 0.9;
//声明一个变量并赋值为0.9,后面会用到。

采用定时器函数,每隔10毫秒执行一次回调函数。
每一次执行span元素的left属性值都会变小。
length * random * 16值就是span元素的宽度,因为span元素的宽度由其内容所决定。
p.offsetLeft < -length * random * 16,也就是span元素完全在弹幕区域消失。
那么就停止定时器函数的执行,并移除该span元素。

var timer = setInterval(function () {
 p.style.left = i * document.body.clientWidth + 'px';
 i -= 0.003;
 if (p.offsetLeft < -length * random * 16) {
   clearInterval(timer);
   mainContent.removeChild(p);
   }
}, 10)

}

随机生成颜色

function randomColor() {
 return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).slice(-6);
}

随时生成介于min到max之间的数字。

function randomFontSize(min, max) {
 return (min + Math.random() * (max - min)).toFixed(2);
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值