视频网站弹幕开发

从学习html,css,js两三个月了,总觉得学习的不够深、不够透,就像犯错时听老师的教导,总是左耳进,右耳出。于是就从网上找一个实战例子来增加一下自己的记忆,刚好看到有个基础课程,视频网站弹幕开发,就自己照着敲一下,写一下自己的理解。

现在绝大部分的视频网站都提供了弹幕的功能,让我们在看视频之余,还可以随心所欲地吐槽一下,那今天我们就来探索视频网站弹幕开发(没有后端)。

效果图:

原料:

phpstorm(曾经讨论过编辑器,其实记事本最厉害,编辑器不重要,重要的是写代码的人。LOL中,英雄并不重要,重要的是使用英雄的人)
jQuery类库
html
css

用到的jQuery方法:

toggle([speed],[easing],[fn])

  用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。

  如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。

speed: 隐藏/显示 效果的速度。默认是 "0"毫秒。可能的值:slow,normal,fast。"

easing:(Optional) 用来指定切换效果,默认是"swing",可用参数"linear"

fn:在动画完成时执行的函数,每个元素执行一次。

animate(params,[speed],[easing],[fn])

  用于创建自定义动画的函数。

  这个函数的关键在于指定动画形式及结果样式属性对象。这个对象中每个属性都表示一个可以变化的样式属性(如“height”、“top”或“opacity”)。注意:所有指定的属性必须用骆驼形式,比如用marginLeft代替margin-left.

  而每个属性的值表示这个样式属性到多少时动画结束。如果是一个数值,样式属性就会从当前的值渐变到指定的值。如果使用的是“hide”、“show”或“toggle”这样的字符串值,则会为该属性调用默认的动画形式。

  在 jQuery 1.2 中,你可以使用 em 和 % 单位。另外,在 jQuery 1.2 中,你可以通过在属性值前面指定 "<em>+=</em>" 或 "<em>-=</em>" 来让元素做相对运动。

params:一组包含作为动画属性和终值的样式属性和及其值的集合

speed:三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000)

easing:要使用的擦除效果的名称(需要插件支持).默认jQuery提供"linear" 和 "swing".

fn:在动画完成时执行的函数,每个元素执行一次。

append(content|fn)

  向每个匹配的元素内部追加内容。

  这个操作与对指定的元素执行appendChild方法,将它们添加到文档中的情况类似。

content:要追加到目标中的内容

上面是查API拷贝过来的。

第一个方法用来打开、关闭弹幕,第二个方法是让弹幕动起来的,第三个方法是添加新的弹幕。

过程:

step 1:写一个html页面

step 2:写一个块<div>作为弹幕的开启open

step 3:写一个块<div>承载弹幕screen

  在这个<div>上面有三部分:

    关闭close<div>

    弹幕显示show<div>

    发射弹幕send<div>(两个input,一个type="text",一个type="button")

<div style="text-align: center;">
    <br /><br /><br /><br /><br /><br /><br /><br />
    <h1><a id="dm-open" href="#">客官,你点我啊</a></h1>
</div>
<div class="dm">
    <div class="dm-screen">
        <div id="dm-close"><a href="#">X</a></div>
        <div class="dm-show">
            <div>爱你</div>
            <div>一生中最爱</div>
            <div>偏偏喜欢你</div>
            <div>只想一生跟你走</div>
        </div>
    </div>
    <div class="dm-send">
        <div class="dm-sub">
            <input id="dm-txt" type="text" value="请输入你想说的话" title=""/>
            <input id="dm-btn" type="button" value="发射弹幕" />
        </div>
    </div>
</div>

step 4:写css部分代码(太多了,我也是想到什么就写什么的,没什么头绪)

  如:根据上面块的划分:

   open 只有一个链接a,a{text-decoration:none;} a:hover{text-decoration:underline;}

   screen 用来显示弹幕内容 screen{background-color:#000000;opacity:o.5}

     close 设置为圆角、右上角 close{border-radius:19px;//大小为块大小的一半}

     show 只要设置一下字体的大小 show{font-size:22px;}

   send 在底部{bottom:0;},有一个输入框和一个按钮,添加圆角 #txt{border-radius:8px}

<style>
        *{
            margin:0;padding:0;
        }
        a{
            text-decoration:none;
        }
        a:hover{
            text-decoration:underline;
        }
        body{
            font-family:serif;
        }
        .dm{
            height:100%;
            width:100%;
            position:absolute;
            top:0;
            left:0;
            display:none;
        }
        .dm-screen{
            height:100%;
            width:100%;
            position:absolute;
            top:0;
            left:0;
            background-color: #000000;
            opacity:0.5;
            z-index:1;
        }
        #dm-close{
            width:38px;
            height:38px;
            position:absolute;
            top:20px;
            right:20px;
            background-color:#fff;
            border-radius:19px;
            border:1px solid #000;
            text-align:center;
            line-height:38px;
            color:white;
            font-size:32px;
            z-index:3;
        }
        #dm-close a:hover{
            color:white;
        }
        #dm-close:hover{
            background-color:red;

        }
        .dm-show{
            position:relative;
        }
        .dm-show div{
            font-size:22px;
            position:absolute;
            /*right:0;*/
            z-index:2;
            color:#ffffff;
        }
        .dm .dm-send{
            position:absolute;
            height: 88px;
            width:100%;
            background-color:#000;
            bottom:0;
            z-index:1;
            border-radius:4px;
        }
        .dm .dm-send .dm-sub{
            height:88px;
            text-align:center;
            line-height:100px;
        }
        .dm .dm-send .dm-sub #dm-txt{
            height:48px;
            width:480px;
            border:0;
            border-radius:8px;
            font-size:18px;
        }
        .dm .dm-send .dm-sub #dm-btn{
            height:48px;
            width:66px;
            border:0;
            background-color: #65c33d;
            color:#fff;
            border-radius:8px;
        }
        .dm .dm-send .dm-sub #dm-btn:hover{
            background-color: #3eaf0e;
        }
    </style>

step 5:js代码

  初始化弹幕:init_screen()

  open点击事件实现弹幕开启

  open.toggle()

  show里面的文字动起来

  show.animate();

  添加弹幕

  show.append(div);

  为了可以得到随机的颜色,借用了getRandomColor()方法

  代码如下:

<script>
    $(function(){
        //打开、关闭弹幕
        $("#dm-open,#dm-close").click(function(){
            $(".dm").toggle(1000);
        });
        //添加弹幕内容
        $("#dm-btn").click(function(){
            var txt=$("#dm-txt").val();
            var div="<div>"+txt+"<div>";
            $(".dm-show").append(div);
            init_screen();
        });
        init_screen();
    });
    function init_screen(){
        var _top=0;
        $(".dm-show").find("div").show().each(function(){
            //获取弹幕初始位置:让它在最右边
            var _left=$(window).width()-$(this).width();
            var _height=$(window).height();

            $(this).css({left:_left,top:_top,color:getRandomColor()});

            _top=_top+66;
            if(_top>=_height-100)
                _top=0;

            var time=16000;
            if($(this).index()%2==0)
                    time=20000;
            //jQuery动画
            $(this).animate({left:‘-‘+_left+‘px‘},time,"linear");

        });
    }
    //获取随机颜色
    var getRandomColor = function(){
        return  ‘#‘ +
                (function(color){
                    return (color +=  ‘0123456789abcdef‘[Math.floor(Math.random()*16)])
                    && (color.length == 6) ? color : arguments.callee(color);
                })(‘‘);
    }
</script>    

最后,就是验证成果的时候,输入一堆无关的话,一直点“发射弹幕”。另外,适应不了手机,于是添加了<meta name="viewport" content="width=device-width,initial-scale=1.0" />自适应,效果有限,应该是自己的CSS代码写得不好。

心得:写页面之前,要心中有框架,再去想实现。

时间: 2024-10-18 07:32:08

视频网站弹幕开发的相关文章

短视频网站定制开发,视频分享网站开发,电影网站开发

绿茶视频系统是是绿茶科技旗下自主开发的视频系统,可??????以支持定制视频相关网站,动漫网站开发,影视导航系统,影视导航源码,电影网站源码,电影网站程序,视频网站源码,一套影视门户网站管理系统,电影.电视剧.综艺.动漫和热门短视频,可以支持定制电脑版+手机版+微信版+小程序版+APP版,由10年的技术团队专业定制,需要的朋友可以联系我们.网站采用:PHP+MySQL+thinkPHP 联系我时,请说是在64楼看到的,谢谢!专业定制网站,管理系统开发,网络推广等,扣扣:236-0248-666

弹幕视频网站的盈利模式 ——以哔哩哔哩弹幕网为例

2015 年 5 月 9 日发布的<传媒蓝皮书 :中国传媒产业发展报告 (2015)>指出,“2014 年网络广告收入首次超过电视广告”,其中贴片广告是网络广告收入的重要组成部分.而与优酷.爱奇艺等传统视频网站不同的是,以 ACG(ACG 为英文Animation.Comic.Game 的缩写,是动画.漫画.游戏的总称) 文化为主要内容的弹幕视频网站没有网络视频前的贴片广告.那么,弹幕视频网站如何实现盈利呢? 弹幕是在互联网环境下诞生的一种实时交互性评论模式,它能以滚动.停留甚至更多动作特效方

酷六类视频网站Android端软件开发视频教程

风网大话优酷 酷六类视频网站Android端软件开发视频教程本系列教程主要讲解一个类似于酷六.优酷等视频网站Android端软件的整体架构.开发流程及代码编写的全过程.具体涉及网络的上传.下载.多线程.SQLite数据库.SDcard操作.UI界面的显示和事件响应.设计模式的介绍和实战,IoC的精妙应用等. 课程目录:1.软件的演示以及和其他软件的比较 133MB2.Android娱乐多媒体的开发的重要的战略意义分析 45.3MB3.软件的概述 47.1MB4.该软件与Android就业 38.

Java开发视频网站大概需要多少钱?

这个还真不好说,需要看你对视频网站有什么要求?你的数据库选择的是什么型号的?需要开发几个页面?服务器是需要高端的还是中低端的?还有你对完成时间有什么要求,这些细节也是决定价格的关键因素. 上面这些因素都关系到价格的高低,具体来说,一般好一点的服务器至少需要5000一年,每一个单页面的设计费用大概在500左右,而且还有什么数据 库维护费用,如果需要添加一些小功能,肯定还是需要另外收费的,还有什么网站防护.测试费用.网站域名等一些费用,你最好还是找一家公司给你一条龙服务 吗,省的到时候是视频网站开发

视频网站开发技术独家报道

视频网站的确算是现代生活中必不可缺的一项娱乐活动,你可以在上面看电影.看电视剧.看新闻.看综艺节目.看体育赛事.看国外节目等,被现代生活的人们所 接受,所以有很多朋友想自己去开发一个这样的网站,其实这样的网站开发起来的确是有一定的困难,因为其中牵扯到很多技术,下面为大家稍微介绍几个: 做网站你首先必须要有一定的网站架构基础,了解前端开发技术(html+css).后台开发技术(比如java.c+等技术),还要需要懂绘图制作软件 (比如dreamweaver),这些东西你都必须要会,如果是小的企业站

pilipili在线视频网站开发日志(一)

模仿bilibili做了一个pilipili在线视频网站 源码已全部托管至github:https://github.com/BrucessKING/pilipili 我主要负责接口的实现 leader给了我两个接口:UserDao VideoDao 使用的框架为SSM 今天遇到的错误问题: 1 org.apache.ibatis.exceptions.PersistenceException: 2 ### Error updating database. Cause: com.mysql.jd

视频网站的盈利模式分析

一. 由于各种客观非客观因素,我国的视频网站和欧美发达国家的视频网站的盈利模式相比还是有很大差别的,接下来就简单的分析介绍一下欧美和国内视频网站盈利模式. 因为对国外的视频网站不是很了解,所以在这里只能简单地介绍一下国外视频网站不同于国内的盈利方式,欧美在版权这方面做得很完善,所以国外的视频网站可以通过购买某部(或某些)电影/剧集的网络播放权/网络首播权,之后通过收费收看这样的方式,为自己的网站的盈利渠道并提升浏览量,比如<越狱><冰与火之歌>等十分热门,但确只能在收费频道播放的剧

视频网站 阻止迅雷劫持下载

最近在开发一个视频站点,若开启迅雷,打开视频播放也 迅雷会劫持视频源,然后弹下载框,导致无法正常播放~~很恶心,很流氓 最简单的解决办法: 客户端,关掉迅雷,或者设置取消监听该浏览器,或者取消监听该域名下的所有内容 当然,作为开发者,肯定无法让每一个用户都这样处理,而已体验很差~~ 看看能不能从自身出发去阻止迅雷这种流氓行为: 迅雷如何做到监控到视频并且拦截: 迅雷通过监控 Request Header : Content-Type: application/octet-stream 一般文件下

优酷、YouTube、Twitter及JustinTV视频网站架构设计

优酷视频网站架构 一.网站基本数据概览 据2010年统计,优酷网日均独立访问人数(uv)达到了8900万,日均访问量(pv)更是达到了17亿,优酷凭借这一数据成为google榜单中国内视频网站排名最高的厂商.     硬件方面,优酷网引进的戴尔服务器主要以 PowerEdge 1950与PowerEdge 860为主,存储阵列以戴尔MD1000为主,2007的数据表明,优酷网已有1000多台服务器遍布在全国各大省市,现在应该更多了吧. 二.网站前端框架 从一开始,优酷网就自建了一套CMS来解决前