zoomla
Version:
16年专业研发|中文alexa排名第一的CMS品牌-基于dotNET core、功能强大,集成站群、微信开发、小程序与ERP及OA办公系统,支持国际语言和多民族语言,世界五百强与大型门户专用高端网站内核CMS系统
591 lines (485 loc) • 22.2 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Jquery.barrager.js 专业的网页弹幕插件</title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="static/css/bootstrap.min.css" media="screen" />
<link rel="stylesheet" type="text/css" href="static/css/style.css" />
<link rel="stylesheet" type="text/css" href="dist/css/barrager.css">
<link rel="stylesheet" type="text/css" href="static/pick-a-color/css/pick-a-color-1.2.3.min.css">
<link type="text/css" rel="stylesheet" href="static/syntaxhighlighter/styles/shCoreDefault.css"/>
</head>
<body class="bb-js">
<div class="navbar navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand navbar-brand-active" href="./">Jquery.barrager.js</a>
</div>
<div class="collapse navbar-collapse navbar-bb-collapse">
<ul class="nav navbar-nav">
<li><a href="./#custom">自定义</a></li>
<li><a href="./#usage">使用</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">集成 <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="./#general-server">通用集成</a></li>
<li><a href="./#discuz">Discuz</a></li>
<li><a href="./#wordpress">Wordpress</a></li>
</ul>
</li>
<li><a href="./#update">版本</a></li>
<li><a href="./#discuss">讨论</a></li>
<li><a href="http://www.uauc.net" target="_blank">UaUc</a></li>
<li><a href="http://www.yaseng.org" target="_blank">Yaseng</a></li>
</ul>
<!--
<ul class="nav navbar-nav navbar-right">
<li>
<a href="./documentation.html">API Documentation</a>
</li>
</ul>
-->
</div>
</div>
</div>
<div id="content" class="bb-docs-header" tabindex="-1">
<div class="container text-center">
<div class="bb-masthead">
<h1>Jquery.barrager.js</h1>
<p>
专业的网页弹幕插件
</p>
</div>
<div class="bb-meta">
<ul class="bb-meta-list">
<li>
<span>Version 1.0</span>
</li>
<li>·</li>
<li>
<a href="https://github.com/yaseng/jquery.barrager.js" target="_blank">下载</a>
</li>
<li>·</li>
<li>
<a href="https://github.com/yaseng/jquery.barrager.js" target="_blank">Github</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<section class="bb-section">
<div class="lead-top">
<p class="lead">
<b>Jquery.barrager.js</b> 是一款优雅的网页弹幕插件,支持显示图片,文字以及超链接。支持速度、高度、颜色、数量等自定义。
</p>
<div class="text-center">
<p class="hidden-xs bb-code code-leader">
$('<span class="bb-code-string">body</span>').barrager(<span class="bb-code-string">{'img':'barrager.png','info':'Hello world!'}</span>);</br>
</p>
<p>
<button class="bb-trigger btn btn-primary btn-lg bb-light-blue" onclick="run_example()"> 弹弹弹</button>
</p>
</div>
</div>
</section>
<section id="custom" class="bb-section">
<div class="page-header">
<h2>自定义</h2>
</div>
<div class="row">
<div class="col-md-6">
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" >文字</label>
<div class="col-sm-6">
<input class="form-control" name="info" type="text" placeholder="弹幕文字信息"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" >链接</label>
<div class="col-sm-6">
<input class="form-control" name="href" type="text" placeholder="http://www.yaseng.org"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" >延迟</label>
<div class="col-sm-2">
<input class="form-control" name="speed" type="text" placeholder="6" value="6" />
</div>
<label class="col-sm-2 control-label" >关闭按钮</label>
<div class="col-sm-2">
<input class="form-control" name="close" type="checkbox" checked >
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" >高度</label>
<div class="col-sm-4">
<label class="radio-inline">
<input type="radio" name="bottomradio" value="0" checked="checked"> 随机
</label>
<label class="radio-inline">
<input type="radio" name="bottomradio" value="1" > 设置
</label>
</div>
<div class="col-sm-2">
<input class="form-control" name="bottom" type="text" placeholder="70" value="70" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" >图片</label>
<div class="col-sm-6">
<label class="radio-inline">
<input type="radio" name="img" value="cute.png" checked=""> cute.png
</label>
<label class="radio-inline">
<input type="radio" name="img" value="haha.gif"> haha.gif
</label>
<label class="radio-inline">
<input type="radio" name="img" value="none"> 无图
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" >颜色</label>
<div class="col-sm-6">
<input type="text" value="fff" name="color" class="pick-a-color form-control">
</div>
</div>
</form>
<div class="form-group">
<label class="col-sm-3 control-label" ></label>
<div class="col-sm-3">
<button class="btn btn-primary bb-light-blue" onclick="run()"> 运行</button>
</div>
<div class="col-sm-3">
<button class="btn btn-warning " onclick="clear_barrage()"> 清除</button>
</div>
</div>
</div>
<div class="col-md-6">
<textarea class="form-control" id="barrager-code" rows="14" ></textarea>
</div>
</div>
</section>
<section id="usage" class="bb-section">
<div class="page-header">
<h2>使用</h2>
</div>
<div>
<h3>发布弹幕</h3>
弹幕文字必选,图片,链接为空则不显示,其他的可选项有默认值,弹幕具体配置如下代码。
<pre class="brush: js;">
var item={
img:'static/heisenberg.png', //图片
info:'弹幕文字信息', //文字
href:'http://www.yaseng.org', //链接
close:true, //显示关闭按钮
speed:6, //延迟,单位秒,默认6
bottom:70, //距离底部高度,单位px,默认随机
color:'#fff', //颜色,默认白色
old_ie_color:'#000000', //ie低版兼容色,不能与网页背景相同,默认黑色
}
$('body').barrager(item);
</pre>
<h3>清除所有弹幕</h3>
<pre class="brush: js;">
$.fn.barrager.removeAll();
</pre>
<h3> 兼容低版本ie </h3>
ie 浏览器小于9不兼容css 圆角,采用兼容样式,可单独设置弹幕的颜色,属性为old_ie_color,建议不要与网页主背景色相同。
兼容模式如图</br></br>
<img src="static/img/ie.png">
</div>
</section>
<section id="usage" class="bb-section">
<div class="page-header">
<h2>集成</h2>
</div>
<div>
<h3>发布弹幕</h3>
<section id="general-server" class="bb-section">
<h4> 通用后端 </h4>
读取服务端有两种模式,适应于不同的场景 </br>
1. 实时读取,隔x秒请求一次接口,获取一条弹幕,发送。 </br>
2. 一次读取完毕,隔x秒发送一条弹幕。</br>
第一种模式示范代码</br>
server 端(php)</br>
<pre class="brush: php">
//数组里面可以自定义弹幕的所有属性。
$barrages=
array(
array(
'info' => '第一条弹幕',
'img' => 'static/img/heisenberg.png',
'href' => 'http://www.yaseng.org',
),
array(
'info' => '第二条弹幕',
'img' => 'static/img/yaseng.png',
'href' => 'http://www.yaseng.org',
'color' => '#ff6600'
),
array(
'info' => '第三条弹幕',
'img' => 'static/img/mj.gif',
'href' => 'http://www.yaseng.org',
'bottom' => 70 ,
),
array(
'info' => '第四条弹幕',
'href' => 'http://www.yaseng.org',
'close' =>false,
),
);
//随机输出一个
echo json_encode($barrages[array_rand($barrages)]);
</pre>
浏览器端获取json 弹幕数据,setInterval 调用,如有弹幕,就显示。</br>
代码如下
<pre class="brush: js">
//每条弹幕发送间隔
var looper_time=3*1000;
//是否首次执行
var run_once=true;
do_barrager();
function do_barrager(){
if(run_once){
//如果是首次执行,则设置一个定时器,并且把首次执行置为false
looper=setInterval(do_barrager,looper_time);
run_once=false;
}
//获取
$.getJSON('server.php?mode=1',function(data){
//是否有数据
if(data.info){
$('body').barrager(data);
}
});
}
</pre>
效果如图
<img src="screenshot/demo_2.gif" class="img-responsive" >
</br>
第二种模式示范代码。 </br>
server 端 (php)
<pre class="brush: php">
//数组里面可以自定义弹幕的所有属性。
$barrages=
array(
array(
'info' => '第一条弹幕',
'img' => 'static/img/heisenberg.png',
'href' => 'http://www.yaseng.org',
),
array(
'info' => '第二条弹幕',
'img' => 'static/img/yaseng.png',
'href' => 'http://www.yaseng.org',
'color' => '#ff6600'
),
array(
'info' => '第三条弹幕',
'img' => 'static/img/mj.gif',
'href' => 'http://www.yaseng.org',
'bottom' => 70 ,
),
array(
'info' => '第四条弹幕',
'href' => 'http://www.yaseng.org',
'close' =>false,
),
);
echo json_encode($barrages);
</pre>
浏览器端 </br>
<pre class="brush: js">
$.ajaxSettings.async = false;
$.getJSON('server.php?mode=2',function(data){
//每条弹幕发送间隔
var looper_time=3*1000;
var items=data;
//弹幕总数
var total=data.length;
//是否首次执行
var run_once=true;
//弹幕索引
var index=0;
//先执行一次
barrager();
function barrager(){
if(run_once){
//如果是首次执行,则设置一个定时器,并且把首次执行置为false
looper=setInterval(barrager,looper_time);
run_once=false;
}
//发布一个弹幕
$('body').barrager(items[index]);
//索引自增
index++;
//所有弹幕发布完毕,清除计时器。
if(index == total){
clearInterval(looper);
return false;
}
}
});
</pre>
效果如图
<img src="screenshot/demo_3.gif" class="img-responsive" >
</br>
</section>
<section id="discuz" class="bb-section">
<h4> Discuz </h4>
discuz 编写了一个插件,采用的是第二种模式。可以显示最近帖子,最新回复,或者指定帖子内容信息。并且可以在管理页面轻松设置各种弹幕参数。
</section>
<section id="wordpress" class="bb-section">
<h4> Wordpress </h4>
暂无
</section>
</div>
</section>
<section id="update" class="bb-section">
<h3> 版本更新 </h3>
<h4> 1.0 </h3>
实现网页弹幕基本功能
</section>
<section id="discuss" class="bb-section">
<h4> 讨论 </h4>
uauc 技术产品交流群:<a target="_blank" href="http://shang.qq.com/wpa/qunwpa?idkey=674e19fafcde6bfc8f11207b7ab4af29bc40a8f38adbf3d47b310d68e1e3ce40"><img border="0" src="http://pub.idqqimg.com/wpa/images/group.png" alt="UaUc产品交流群" title="UaUc产品交流群"></a>
</section>
</div>
<div class="well container">
<div style="float:right">
<a href="https://weibo.com/yasengberg" class="twitter-share-button" data-via="makeusabrew" data-related="makeusabrew" data-size="large">Weibo</a>
</div>
© 2010-2016 <a href="http://www.uauc.net">UaUc.NeT</a>.
by — yaseng@uauc.net <a href="http://www.yaseng.org">yaseng.org</a>
</div>
<!-- JS dependencies -->
<script type="text/javascript" src="static/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="static/js/bootstrap.min.js"></script>
<script type="text/javascript" src="static/js/tinycolor-0.9.15.min.js"></script>
<script type="text/javascript" src="dist/js/jquery.barrager.min.js"></script>
<script type="text/javascript" src="static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="static/syntaxhighlighter/scripts/shBrushJScript.js"></script>
<script type="text/javascript" src="static/syntaxhighlighter/scripts/shBrushPhp.js"></script>
<script type="text/javascript" src="static/pick-a-color/js/pick-a-color-1.2.3.min.js"></script>
<script type="text/javascript">
String.prototype.format = function(args) {
var result = this;
if (arguments.length < 1) {
return result;
}
var data = arguments;
if (arguments.length == 1 && typeof (args) == "object") {
data = args;
}
for (var key in data) {
var value = data[key];
if (undefined != value) {
result = result.replace("{" + key + "}", value);
}
}
return result;
}
var barrager_code=
'var item={\n'+
" img:'{img}', //图片 \n"+
" info:'{info}', //文字 \n"+
" href:'{href}', //链接 \n"+
" close:{close}, //显示关闭按钮 \n"+
" speed:{speed}, //延迟,单位秒,默认6 \n"+
" bottom:{bottom}, //距离底部高度,单位px,默认随机 \n"+
" color:'{color}', //颜色,默认白色 \n"+
" old_ie_color:'{old_ie_color}', //ie低版兼容色,不能与网页背景相同,默认黑色 \n"+
" }\n"+
"$('body').barrager(item);"
;
$(function() {
SyntaxHighlighter.all();
$(".pick-a-color").pickAColor();
var default_item={
'img':'static/heisenberg.png',
'info':'弹幕文字信息',
'href':'http://www.yaseng.org',
'close':true,
'speed':6,
'bottom':70,
'color':'#fff' ,
'old_ie_color':'#000000'
};
var item={'img':'static/img/heisenberg.png','href':'http://www.baidu.com','info':'Jquery.barrager.js 专业的网页弹幕插件'};
//item1={'href':'http://www.baidu.com','info':'这是一条很长很长的字幕','close':false};
$('#barrager-code').val(barrager_code.format(default_item));
$('body').barrager(item);
//每条弹幕发送间隔
var looper_time=3*1000;
//是否首次执行
var run_once=true;
// do_barrager();
function do_barrager(){
if(run_once ){
//如果是首次执行,则设置一个定时器,并且把首次执行置为false
looper=setInterval(do_barrager,looper_time);
run_once=false;
}
//获取
$.getJSON('server.php?mode=1',function(data){
//是否有数据
if(data.info){
$('body').barrager(data);
}
});
}
function barrager(){
}
});
function run(){
var info=$('input[name=info]').val();
(info == '' ) ? info='请填写弹幕文字' : info=info;
var href=$('input[name=href]').val();
var speed=parseInt($('input[name=speed]').val());
var bottom=parseInt($('input[name=bottom]').val());
var code=barrager_code;
if($('input:radio[name=bottomradio]:checked').val() == 0){
var window_height=$(window).height()-150;
bottom=Math.floor(Math.random()*window_height+40);
code=code.replace(" bottom:{bottom}, //距离底部高度,单位px,默认随机 \n",'');
}
var img=$('input:radio[name=img]:checked').val();
if (img == 'none' ){
code=code.replace(" img:'{img}', //图片 \n",'');
}
var item={
'img':'static/img/'+img,
'info':info,
'href':href,
'close':true,
'speed':speed,
'bottom':bottom,
'color':'#'+$('input[name=color').val(),
'old_ie_color':'#'+$('input[name=color').val()
};
if(!$('input[name=close]').is(':checked')){
item.close=false;
}
code=code.format(item);
console.log(code);
$('#barrager-code').val(code);
eval(code);
}
function clear_barrage(){
$.fn.barrager.removeAll();
}
function run_example(){
var example_item={'img':'static/img/heisenberg.png','info':'Hello world!'};
$('body').barrager(example_item);
return false;
}
</script>
</body>
</html>