js 简单弹幕效果

最终效果:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <title>弹幕</title>
    <style>
        html,body{font-size:10px;overflow:hidden;margin:0;padding:0;}
        #box{width:100%;height:100%;}
        #dm{width:100%;height:90vh;background:#E8F1F5;}
        #dm span{width:auto;height:3rem;font-size:2rem;line-height:2rem;position:absolute;white-space:nowrap;}
        #idDom{width:100%;height:10vh;background:#666;position:absolute;bottom:0;display:flex;align-items:center;justify-content:center;}
        #content{width:50rem;height:10vh;display:flex;align-items:center;justify-content:center;}
        .title{font-size:2.2px rein;color:#fff;line-height:#ccc;}
        .text{width:30rem;height:2.5rem;border:none;border-radius:.5rem;font-size:1.4rem;margin:0 .5rem;padding:0 1rem;}
        .btn{width:6rem;height:3rem;border:none;background:red;color:#fff;}
    </style>
</head>
<body>
<div class="box" id="box">
    <div id="dm"></div>
    <div class="idDom" id="idDom">
        <div id="content">
            <p class="title">吐槽:</p>
            <input type="text" class="text" id="text" placeholder="请输入你想说的话" />
            <button type="button" class="btn" id="btn">发送</button>
        </div>
    </div>
</div>
<script>
    var timer;
    var btn = document.getElementById('btn');
    btn.onclick = function() { addBarrage();}
    document.onkeydown = function(evt) {var event = evt || window.event;if (event.keyCode == 13) {addBarrage();}}
    var colors = ['#2C3E50', '#FF0000', '#1E87F0', '#7AC84B', '#FF7F00', '#9B39F4', '#FF69B4'];//弹幕颜色库
    function addBarrage() {
        clearInterval(timer);
        var text = document.getElementById('text').value;
        document.getElementById('text').value = "";
        var index = parseInt(Math.random() * colors.length); //随机弹幕颜色
        var screenW = window.innerWidth;
        var screenH = dm.offsetHeight;
        var max = Math.floor(screenH / 40);
        var height = 10 + 40 * (parseInt(Math.random() * (max + 1)) - 1);
        var span = document.createElement('span');
        span.style.left = screenW + 'px';
        span.style.top = height + 'px';
        span.style.color = colors[index];
        span.innerHTML = text;
        var dmDom = document.getElementById('dm');
        dmDom.appendChild(span);
        timer = setInterval(move, 10);
    }
    function move() {
        var arr=[];
        var oSpan=document.getElementsByTagName('span');
        for(var i=0;i<oSpan.length;i++){
            arr.push(oSpan[i].offsetLeft);
            arr[i] -= 2;
            oSpan[i].style.left = arr[i]+'px';
            if(arr[i]<-oSpan[i].offsetWidth){
                var dmDom=document.getElementById('dm');
                dmDom.removeChild(dmDom.childNodes[0]);
            }
        }
    }
</script>
</body>
</html>

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现弹幕效果,可以使用CSS3的动画效果和JavaScript的DOM操作。下面是一个简单的示例代码: ```HTML <!DOCTYPE html> <html> <head> <title>弹幕示例</title> <style type="text/css"> .bullet { position: absolute; top: 0; font-size: 16px; color: #fff; background-color: red; padding: 6px 12px; border-radius: 20px; white-space: nowrap; animation: bullet 8s linear infinite; } @keyframes bullet { from { transform: translateX(100%); } to { transform: translateX(-100%); } } </style> <script type="text/javascript"> window.onload = function() { // 创建一个弹幕元素 function createBullet(text) { var bullet = document.createElement('div'); bullet.className = 'bullet'; bullet.innerText = text; document.body.appendChild(bullet); setTimeout(function() { document.body.removeChild(bullet); }, 8000); } // 发送弹幕 document.getElementById('send').addEventListener('click', function() { var text = document.getElementById('text').value; if(text) { createBullet(text); document.getElementById('text').value = ''; } }); } </script> </head> <body> <input type="text" id="text" placeholder="请输入内容"> <button id="send">发送</button> </body> </html> ``` 这段代码使用了CSS3的动画和JavaScript的DOM操作来实现弹幕效果。具体来说,创建了一个类名为“bullet”的div元素,并给它添加了弹幕的样式,然后定义了一个名为“bullet”的动画,将弹幕从右侧滑动到左侧。页面加载完成后,创建了一个“createBullet()”函数,用于创建弹幕元素并添加到页面中,同时使用setTimeout()函数删除弹幕元素。最后,使用addEventListener()函数来监听发送按钮的点击事件,执行createBullet()函数创建新的弹幕元素。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值