jQuery案例学习【发送弹幕】

一、效果演示

在这里插入图片描述

二、代码

1、html代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./弹幕.css">
    <!--<script src="./jquery-3.5.1.js"></script>-->
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <title>弹幕案例</title>
</head>

<body>
    <div class="boxDom" id="boxDom">
        <div class="idDom" id="idDom">
            <div class="content">
                <p class="title">弹幕:</p>
                <input type="text" class="text" id="text" placeholder="请输入弹幕"/>
                <button type="button" class="btn" id="btn">发射</button>
            </div>
        </div>
    </div>
</body>

</html>

2、css代码

html,
body {
    margin: 0px;
    padding: 0px;
    width: 100%;
    height: 100%;
    font-family: "微软雅黑";
    font-size: 62.5%;
}
.boxDom {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
}
.idDom {
    width: 100%;
    height: 50px;
    background: #666;
    position: fixed;
    bottom: 0px;
}
.content {
    display: inline-block;
    width: 430px;
    height: 40px;
    position: absolute;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    margin: auto;
}
.title {
    display: inline;
    font-size: 4em;
    vertical-align: bottom;
    color: #fff;
    vertical-align: middle;
}
.text {
    border: none;
    width: 300px;
    height: 40px;
    border-radius: 5px;
    font-size: 2.4em;
}
.btn {
    width: 60px;
    height: 40px;
    background: #f90000;
    border: none;
    color: #fff;
    font-size: 2.4em;
    line-height: 40px;
    border-radius: 3px;
}
span {
    width: 300px;
    height: 40px;
    position: absolute;
    overflow: hidden;
    color: #000;
    font-size: 4em;
    line-height: 1.5em;
    cursor: pointer;
    white-space: nowrap;
}

3、jQuery代码

<script>
    //页面加载函数
    $(function(){
        //给回车按钮添加点击事件
        $("#text").keyup(function(e){
            if(e.keyCode == 13){
                send();
            }
        });
        //给发射按钮添加点击事件
        $("#btn").click(function(){
            send();
        });
    })

    //发送弹幕
    function send(){
        //获取当前网页宽高,确定弹幕初始left值与生成弹幕的高度区间
        var page_width = window.document.body.offsetWidth;
        var page_height = window.document.body.offsetHeight;

        
        //声明一个颜色数组
        var colors = ['pink','red','green','orange','black','blue','#660000','#9966CC','#FF9900','#0099CC','#CC3366','#999933'];

        //生生一个随机的颜色下标
        var randomColorIndex = parseInt(Math.random() * colors.length);
        
        //生成随机top值(相当于在距离屏幕顶部距离60%范围内添加弹幕)
        var randomY = parseFloat(Math.random() * page_height * 0.6)

        //使用链式编程生成一个span标签
        console.log(parseInt(Math.random() * colors.length))
        console.log(colors[randomColorIndex])
        var span = $("<span></span>")
            //设置span内容(text和html方法均可)
            .text($("#text").val())
            //设置span字体颜色
            .css('color',colors[randomColorIndex])
            //设置span距离顶部的距离
            .css('top',randomY)
            //设置span最开始距离屏幕左侧的距离
            .css('left',page_width)
            //设置span标签的自定义动画效果: 耗时15s时间 距离左侧位置变为-100px 匀速运动 回调函数-运动到-100px时自动移除该元素
            .animate({left:'-100px'}
                ,15000,'linear'
                ,function(){
                    $(this).remove()
                }
            )
        
        //将span标签添加到到boxDom中展示
        $("#boxDom").append(span);

        //清空输入框内容
        $("#text").val("")
    }

</script>

4、完整代码

4.1 弹幕.html文件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./弹幕.css">
    <!--<script src="./jquery-3.5.1.js"></script>-->
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <title>弹幕案例</title>
</head>
<script>
    //页面加载函数
    $(function(){
        //给回车按钮添加点击事件
        $("#text").keyup(function(e){
            if(e.keyCode == 13){
                send();
            }
        });
        //给发射按钮添加点击事件
        $("#btn").click(function(){
            send();
        });
    })

    //发送弹幕
    function send(){
        //获取当前网页宽高,确定弹幕初始left值与生成弹幕的高度区间
        var page_width = window.document.body.offsetWidth;
        var page_height = window.document.body.offsetHeight;

        
        //声明一个颜色数组
        var colors = ['pink','red','green','orange','black','blue','#660000','#9966CC','#FF9900','#0099CC','#CC3366','#999933'];

        //生生一个随机的颜色下标
        var randomColorIndex = parseInt(Math.random() * colors.length);
        
        //生成随机top值(相当于在距离屏幕顶部距离60%范围内添加弹幕)
        var randomY = parseFloat(Math.random() * page_height * 0.6)

        //使用链式编程生成一个span标签
        console.log(parseInt(Math.random() * colors.length))
        console.log(colors[randomColorIndex])
        var span = $("<span></span>")
            //设置span内容(text和html方法均可)
            .text($("#text").val())
            //设置span字体颜色
            .css('color',colors[randomColorIndex])
            //设置span距离顶部的距离
            .css('top',randomY)
            //设置span最开始距离屏幕左侧的距离
            .css('left',page_width)
            //设置span标签的自定义动画效果: 耗时15s时间 距离左侧位置变为-100px 匀速运动 回调函数-运动到-100px时自动移除该元素
            .animate({left:'-100px'}
                ,15000,'linear'
                ,function(){
                    $(this).remove()
                }
            )
        
        //将span标签添加到到boxDom中展示
        $("#boxDom").append(span);

        //清空输入框内容
        $("#text").val("")
    }

</script>

<body>
    <div class="boxDom" id="boxDom">
        <div class="idDom" id="idDom">
            <div class="content">
                <p class="title">弹幕:</p>
                <input type="text" class="text" id="text" placeholder="请输入弹幕"/>
                <button type="button" class="btn" id="btn">发射</button>
            </div>
        </div>
    </div>
</body>

</html>

4.2 弹幕.css文件

html,
body {
    margin: 0px;
    padding: 0px;
    width: 100%;
    height: 100%;
    font-family: "微软雅黑";
    font-size: 62.5%;
}
.boxDom {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
}
.idDom {
    width: 100%;
    height: 50px;
    background: #666;
    position: fixed;
    bottom: 0px;
}
.content {
    display: inline-block;
    width: 430px;
    height: 40px;
    position: absolute;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    margin: auto;
}
.title {
    display: inline;
    font-size: 4em;
    vertical-align: bottom;
    color: #fff;
    vertical-align: middle;
}
.text {
    border: none;
    width: 300px;
    height: 40px;
    border-radius: 5px;
    font-size: 2.4em;
}
.btn {
    width: 60px;
    height: 40px;
    background: #f90000;
    border: none;
    color: #fff;
    font-size: 2.4em;
    line-height: 40px;
    border-radius: 3px;
}
span {
    width: 300px;
    height: 40px;
    position: absolute;
    overflow: hidden;
    color: #000;
    font-size: 4em;
    line-height: 1.5em;
    cursor: pointer;
    white-space: nowrap;
}

三、注意事项

  • 回车键 和 发送按钮均可以发送弹幕
  • jquery样式采用网络引入的形式
  • 弹幕.html和弹幕.css文件需要在同级目录下,否则需要更改html中引入的样式路径

四、参考知识

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
视频弹幕效果可以通过 JavaScript 和 jQuery 实现,具体实现步骤如下: 1. 创建弹幕元素 首先,在视频播放器下方创建一个 div 元素,用于显示弹幕,将其样式设置为绝对定位,宽度为视频播放器的宽度,高度为弹幕字体大小的两倍,背景色为透明。 ```html <div id="danmu-container"></div> ``` ```css #danmu-container { position: absolute; bottom: 0; width: 100%; height: 2em; background-color: transparent; overflow: hidden; } ``` 2. 发送弹幕 使用 jQuery 监听发送按钮的点击事件,获取文本框中的弹幕内容,并动态创建一个 span 元素,设置其样式和文本内容,将其添加到弹幕容器内,设置其初始位置为容器的右侧,使用 animate() 方法实现弹幕的滚动效果。 ```html <input type="text" id="danmu-input"> <button id="danmu-send">发送</button> ``` ```javascript $('#danmu-send').click(function() { var content = $('#danmu-input').val(); if (content) { var $danmu = $('<span>' + content + '</span>'); $danmu.css({ position: 'absolute', top: Math.random() * ($('#danmu-container').height() - 30) + 'px', right: 0, fontSize: '1em', whiteSpace: 'nowrap', color: '#fff' }); $('#danmu-container').append($danmu); $danmu.animate({ right: $('#danmu-container').width() }, 10000, function() { $(this).remove(); }); $('#danmu-input').val(''); } }); ``` 3. 暂停弹幕 使用 jQuery 监听视频播放器的暂停事件,遍历弹幕容器内的所有弹幕元素,使用 stop() 方法停止弹幕的滚动动画,即可实现暂停弹幕的效果。 ```javascript $('#video-player').on('pause', function() { $('#danmu-container span').stop(); }); ``` 以上就是使用 JavaScript 和 jQuery 实现视频弹幕效果的基本步骤,可以根据需要进行功能扩展和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迟到_啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值