javascript实现视频弹幕效果(两个版本)


Posted in Javascript onNovember 28, 2019

本文实例为大家分享了javascript实现视频弹幕效果的具体代码,供大家参考,具体内容如下

基础版本

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

<head>
 <meta charset="utf-8">
 <style>
 * {
 margin: 0;
 padding: 0;
 }

 .dm {
 width: 800px;
 height: 600px;
 background-color: blue;
 margin: 0 auto;
 }

 .box {
 height: 500px;
 background-color: #000;
 position: relative;
 overflow: hidden;
 }

 video {
 width: 100%;
 height: 100%;
 }

 .info {
 text-align: center;
 margin-top: 20px;
 }

 input[type=text] {
 width: 500px;
 height: 50px;
 }

 input[type=button] {
 height: 50px;
 width: 100px;

 }

 span {
 position: absolute;
 /* 文本强制不换行 */
 white-space: nowrap;
 font: bold 18px '微软雅黑';
 }
 </style>

</head>

<body>
 <div class="dm">
 <div class="box">
 <video src="m.mp4" controls></video>
 </div>
 <div class="info">
 <input type="text" maxlength="30" id="txt">
 <input type="button" value="发射" id="emit">
 </div>
 </div>
 <script src="jquery-1.12.4.js"></script>
 <script>
 // 0. 用一个数组保存一组颜色值
 var colors = ['red', 'green', 'yellow', '#fff', 'pink', 'blue'];
 // 1. 给发射按钮注册点击事件
 $('#emit').click(function () {
 // 2. 获取文本框的内容
 var v = $('#txt').val();
 // 3. 创建span标签,并设置内容,设置样式,最后追加到类名为box的div中
 var $span = $('<span></span>');
 $span.text(v)
 .css({
  left: $('.box').width(),
  top: parseInt(Math.random() * $('.box').height()),
  color: colors[parseInt(Math.random() * colors.length)]
 }).appendTo('.box');
 // 4. 让当前的span产生动画 left 为-span的宽度
 $span.animate({
 left: -1 * $span.width()
 }, 6000, 'linear', function () {
 // 当动画结束后,删除该元素
 $span.remove();
 })
 });
 </script>

</body>

</html>

加强版本

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

<head>
 <meta charset="utf-8">
 <style>
 * {
 margin: 0;
 padding: 0;
 }

 .dm {
 width: 800px;
 height: 600px;
 background-color: blue;
 margin: 0 auto;
 }

 .box {
 height: 500px;
 background-color: #000;
 position: relative;
 overflow: hidden;
 }

 video {
 width: 100%;
 height: 100%;
 }

 .info {
 text-align: center;
 margin-top: 20px;
 }

 input[type=text] {
 width: 500px;
 height: 50px;
 }

 input[type=button] {
 height: 50px;
 width: 100px;

 }

 span {
 position: absolute;
 /* 文本强制不换行 */
 white-space: nowrap;
 font: bold 18px '微软雅黑';
 }
 </style>

</head>

<body>
 <div class="dm">
 <div class="box">
 <!-- controls 如果出现该属性,则向用户显示控件,比如播放按钮。 -->
 <video src="m.mp4" controls></video>
 </div>
 <div class="info">
 <input type="radio" value="" id="ban" name="1">精简</input>
 <input type="radio" value="" id="vip" name="1">VIP尊享</input>
 <input type="text" maxlength="30" id="txt">
 <input type="button" value="发射" id="emit">
 </div>
 </div>
 <script src="jquery-1.12.4.js"></script>
 <script>
 // 0. 用一个数组保存一组颜色值
 var colors = ['red', 'green', 'yellow', '#fff', 'pink', 'blue'];

 //定义一个变量,定义其他样式的
 b = 0
 $('#ban').click(function () {
 b = 1;
 });
 $('#vip').click(function () {
 b = 2;
 });




 // 1. 给发射按钮注册点击事件
 $('#emit').click(function () {
 // 2. 获取文本框的内容
 var v = $('#txt').val();
 // 3. 创建span标签,并设置内容,设置样式,最后追加到类名为box的div中
 var $span = $('<span></span>');

 //定义CSS样式,让它是一个数组形式表现
 css = [{
  "left": $('.box').width(),
  "top": parseInt(Math.random() * $('.box').height()),
  "color": colors[parseInt(Math.random() * colors.length)]
 },
 {
  "left": $('.box').width(),
  "top": parseInt(Math.random() * ($('.box').height() / 2)),
  "color": colors[parseInt(Math.random() * colors.length)]
 },
 {
  "left": $('.box').width(),
  "top": parseInt(Math.random() * $('.box').height()),
  "color": "yellow",
  "fontSize": 50,
  "fontFamily": "楷体"
 }
 ]
 //看看能不能打印出数组中的东西
 // console.log(abc[1])

 $span.text(v)
 .css(css[b])
 .appendTo('.box');

 // 4. 让当前的span产生动画 left 为-span的宽度

 //打印出文本长度
 // console.log(v.length)

 $span.animate({
  left: -1 * $span.width()
 }, (30 - v.length) * 333, 'linear',
 function () {
  // 当动画结束后,删除该元素
  $span.remove();
 })
 });
 </script>

</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
Aug 18 Javascript
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
在百度知道团队中快速审批新成员的js脚本
Feb 02 Javascript
jQuery实现数字加减效果汇总
Dec 16 Javascript
JavaScript中的类数组对象介绍
Dec 30 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
详解vue.js全局组件和局部组件
Apr 10 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
javaScript之split与join的区别(详解)
Nov 08 Javascript
JavaScript实现的简单加密解密操作示例
Jun 01 Javascript
javascript实现点击小图显示大图
Nov 29 Javascript
javascript实现弹幕墙效果
Nov 28 #Javascript
jquery实现直播弹幕效果
Nov 28 #jQuery
jQuery实现简单弹幕效果
Nov 28 #jQuery
微信小程序事件流原理解析
Nov 27 #Javascript
JS实现简单省市二级联动
Nov 27 #Javascript
Angular value与ngValue区别详解
Nov 27 #Javascript
原生js实现二级联动菜单
Nov 27 #Javascript
You might like
一些星际专用术语解释
2020/03/04 星际争霸
十天学会php之第七天
2006/10/09 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
JavaScript使用localStorage存储数据
2019/09/25 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
一文读懂Python 枚举
2020/08/25 Python
函授教育个人学习的自我评价
2013/12/31 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
请假条应该怎么写?
2019/06/24 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
Nebula Graph解决风控业务实践
2022/03/31 MySQL
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers