在本文中,我们将为您详细介绍JS框架_(JQuery.js)网页文字评论弹幕的相关知识,并且为您解答关于js实现评论功能的疑问,此外,我们还会提供一些关于Google趋势中显示jQuery是最流行的J
在本文中,我们将为您详细介绍JS框架_(JQuery.js)网页文字评论弹幕的相关知识,并且为您解答关于js实现评论功能的疑问,此外,我们还会提供一些关于Google趋势中显示jQuery是最流行的JS框架、javascript – 如何使用JS或JQuery / JS框架通过所有浏览器选项卡发送信号(触发事件)?、jquery – 哪个HTML5 Media JS框架最好?、jquery 图片截取工具jquery.imagecropper.js_jquery的有用信息。
本文目录一览:- JS框架_(JQuery.js)网页文字评论弹幕(js实现评论功能)
- Google趋势中显示jQuery是最流行的JS框架
- javascript – 如何使用JS或JQuery / JS框架通过所有浏览器选项卡发送信号(触发事件)?
- jquery – 哪个HTML5 Media JS框架最好?
- jquery 图片截取工具jquery.imagecropper.js_jquery
JS框架_(JQuery.js)网页文字评论弹幕(js实现评论功能)
百度云盘 传送门 密码:3azl
jQuery网页右下角文字评论弹幕效果


<!DOCTYPE html>
<html>
<head>
<title>jQuery网页右下角文字评论弹幕代码</title>
<meta charset="utf-8">
<meta id="scale" content="initial-scale=1, maximum-scale=1, user-scalable=0" name="viewport">
<script src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/data.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<style type="text/css">
*{
padding:0;
margin:0;
}
a{
text-decoration: none;
}
p {
position: fixed;
top: 50%;
left: 0;
right: 0;
text-align: center;
transform: translateY(-50%);
font-size: 40px;
font-weight: 900;
color: white;
text-shadow: 0 0 50px black;
text-transform: capitalize;
font-family: ''Roboto'',''Helvetica'',''Arial'',sans-serif;
letter-spacing: 5px;
}
.form-control{
display: inline-block;
width: auto;
padding: 6px 12px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
}
.btn{
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: 400;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
}
.btn-primary {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
}
/*组件主样式*/
.overflow-text{
display: block;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
opacity:0;
clear: both;
padding:3px 10px;
border-radius: 10px;
box-sizing: border-box;
max-width: 100%;
color:#fff;
animation:colorchange 3s infinite alternate;
-webkit-animation:colorchange 3s infinite alternate; /*Safari and Chrome*/
}
@keyframes colorchange{
0%{
color:red;
}
50%{
color:green;
}
100%{
color:#6993f9;
}
}
</style>
</head>
<body>
<p>Gary</p>
<center><br><br><br>
<button id="stop" class="btn btn-primary">停止</button>
<button id="open" class="btn btn-primary">弹</button>
<input type="text" class="form-control" name="" id="barrage_content" placeholder="添加弹幕内容"><button class="btn btn-primary" id="submit_barraget">发送</button>
</center>
<script type="text/javascript">
// 数据初始化
var Obj = $(''body'').barrage({
data : data, //数据列表
row : 5, //显示行数
time : 1000, //间隔时间
gap : 20, //每一个的间隙
position : ''fixed'', //绝对定位
direction : ''bottom right'', //方向
ismoseoverclose : true, //悬浮是否停止
})
Obj.start();
//添加评论
$("#submit_barraget").click(function(){
var val = $("#barrage_content").val();
//此格式与dataa.js的数据格式必须一致
var addVal = {
href : '''',
text : val
}
//添加进数组
Obj.data.unshift(addVal);
alert(''评论成功'');
})
$("#open").click(function(){
Obj.start();
})
$("#stop").click(function(){
Obj.close();
})
</script>
</body>
</html>


$.fn.barrage = function(opt){
var _self = $(this);
var opts = { //默认参数
data : [], //数据列表
row : 5, //显示行数
time : 2000, //间隔时间
gap : 20, //每一个的间隙
position : ''fixed'', //绝对定位
direction : ''bottom right'', //方向
ismoseoverclose : true, //悬浮是否停止
}
var settings = $.extend({},opts,opt); //合并参数
var M = {},Obj = {};
Obj.data = settings.data;
M.vertical = settings.direction.split(/\s+/)[0]; //纵向
M.horizontal = settings.direction.split(/\s+/)[1]; //横向
M.bgColors = [''#edbccc'',''#edbce7'',''#c092e4'',''#9b92e4'',''#92bae4'',''#92d9e4'',''#92e4bc'',''#a9e492'',''#d9e492'',''#e4c892'']; //随机背景色数组
Obj.arrEle = []; //预计存储dom集合数组
M.barrageBox = $(''<div id="barrage" style="z-index:999;max-width:100%;position:''+settings.position+'';''+M.vertical+'':0;''+M.horizontal+'':0;"></div>''); //存所有弹幕的盒子
M.timer = null;
var createView = function(){
var randomIndex = Math.floor(Math.random() * M.bgColors.length);
var ele = $(''<a class="overflow-text" target="_blank" style="opacity:0;text-align:''+settings.direction.split(/\s+/)[1]+'';float:''+settings.direction.split(/\s+/)[1]+'';background-color:''+M.bgColors[randomIndex]+''"; href="''+(Obj.data[0].href ? Obj.data[0].href : "javascript:;")+''">''+Obj.data[0].text+''</a>'');
var str = Obj.data.shift();
if(M.vertical == ''top''){
ele.animate({
''opacity'' : 1,
''margin-top'' : settings.gap,
},1000)
M.barrageBox.prepend(ele);
}else{
ele.animate({
''opacity'' : 1,
''margin-bottom'' : settings.gap,
},1000)
M.barrageBox.append(ele);
}
Obj.data.push(str);
if(M.barrageBox.children().length > settings.row){
M.barrageBox.children().eq(0).animate({
''opacity'' : 0,
},300,function(){
$(this).css({
''margin'' : 0,
}).remove();
})
}
}
M.mouseClose = function(){
settings.ismoseoverclose && (function(){
M.barrageBox.mouseover(function(){
clearInterval(M.timer);
M.timer = null;
}).mouseout(function(){
M.timer = setInterval(function(){ //循环
createView();
},settings.time)
})
})()
}
Obj.close = function(){
M.barrageBox.remove();
clearInterval(M.timer);
M.timer = null;
}
Obj.start = function(){
if(M.timer) return;
_self.append(M.barrageBox); //把弹幕盒子放到页面中
createView(); //创建试图并开始动画
M.timer = setInterval(function(){ //循环
createView();
},settings.time)
M.mouseClose();
}
return Obj;
}


var data = [
{href : ''http://www.baidu.com'',text : ''百度''},
{href : ''http://www.cnblogs.com/1138720556Gary/'',text : ''Cynical丶Gary''},
{href : '''',text : ''这是弹幕_1''},
{href : '''',text : ''这是弹幕_2''},
{href : '''',text : ''这是弹幕_3''}
]
实现过程:
CSS
弹幕文字动画效果
@keyframes colorchange{
0%{
color:red;
}
50%{
color:green;
}
100%{
color:#6993f9;
}
}
通过 @keyframes 规则,能够创建随着弹幕出现时间改变弹幕颜色动画
0% 是动画的开始时间,100% 动画的结束时间
初始化弹幕
var data = [
{href : ''http://www.baidu.com'',text : ''百度''},
{href : ''http://www.cnblogs.com/1138720556Gary/'',text : ''Cynical丶Gary''},
{href : '''',text : ''这是弹幕_1''},
{href : '''',text : ''这是弹幕_2''},
{href : '''',text : ''这是弹幕_3''}
]
href作为参数链接,新建弹幕默认无链接
弹幕属性
var opts = { //默认参数
data : [], //数据列表
row : 5, //显示行数
time : 2000, //间隔时间
gap : 20, //每一个的间隙
position : ''fixed'', //绝对定位
direction : ''bottom right'', //方向
ismoseoverclose : true, //悬浮是否停止
}
随机背景色数组
M.bgColors = [''#edbccc'',''#edbce7'',''#c092e4'',''#9b92e4'',''#92bae4'',''#92d9e4'',''#92e4bc'',''#a9e492'',''#d9e492'',''#e4c892''];
弹幕展示效果
var createView = function(){
var randomIndex = Math.floor(Math.random() * M.bgColors.length);
var ele = $(''<a class="overflow-text" target="_blank" style="opacity:0;text-align:''+settings.direction.split(/\s+/)[1]+'';float:''+settings.direction.split(/\s+/)[1]+'';background-color:''+M.bgColors[randomIndex]+''"; href="''+(Obj.data[0].href ? Obj.data[0].href : "javascript:;")+''">''+Obj.data[0].text+''</a>'');
var str = Obj.data.shift();
if(M.vertical == ''top''){
ele.animate({
''opacity'' : 1,
''margin-top'' : settings.gap,
},1000)
M.barrageBox.prepend(ele);
}else{
ele.animate({
''opacity'' : 1,
''margin-bottom'' : settings.gap,
},1000)
M.barrageBox.append(ele);
}
Obj.data.push(str);
if(M.barrageBox.children().length > settings.row){
M.barrageBox.children().eq(0).animate({
''opacity'' : 0,
},300,function(){
$(this).css({
''margin'' : 0,
}).remove();
})
}
}
prepend():在被选元素的开头(仍位于内部)插入指定内容
animate() :执行 CSS 属性集的自定义动画
shift() 方法:用于把数组的第一个元素从其中删除,并返回第一个元素的值
当需要暂时的弹幕数量>最大展示数量(这里是5),那么全部展现出来,否则通过opacity()方法,改变弹幕透明度
语法
鼠标放置弹幕上,弹幕停止滚动
M.mouseClose = function(){
settings.ismoseoverclose && (function(){
M.barrageBox.mouseover(function(){
clearInterval(M.timer);
M.timer = null;
}).mouseout(function(){
M.timer = setInterval(function(){ //循环
createView();
},settings.time)
})
})()
}
通过.ismoseoverclose判断鼠标是否悬停在弹幕上
M.timer = null使弹幕停止滚动
关闭弹幕
Obj.close = function(){
M.barrageBox.remove();
clearInterval(M.timer);
M.timer = null;
}
开启弹幕
Obj.start = function(){
if(M.timer) return;
_self.append(M.barrageBox); //把弹幕盒子放到页面中
createView(); //创建试图并开始动画
M.timer = setInterval(function(){ //循环
createView();
},settings.time)
M.mouseClose();
}
DOM
<script type="text/javascript">
// 数据初始化
var Obj = $(''body'').barrage({
data : data, //数据列表
row : 5, //显示行数
time : 1000, //间隔时间
gap : 20, //每一个的间隙
position : ''fixed'', //绝对定位
direction : ''bottom right'', //方向
ismoseoverclose : true, //悬浮是否停止
})
Obj.start();
//添加评论
$("#submit_barraget").click(function(){
var val = $("#barrage_content").val();
//此格式与dataa.js的数据格式必须一致
var addVal = {
href : '''',
text : val
}
//添加进数组
Obj.data.unshift(addVal);
alert(''评论成功'');
})
$("#open").click(function(){
Obj.start();
})
$("#stop").click(function(){
Obj.close();
})
</script>
Google趋势中显示jQuery是最流行的JS框架
编译:GBin1.com
以下是2004到2011年各大流行JS框架主站的访问量趋势图!
jQuery很明显是最流行的框架!顺便说一句,过去很难和prototype比较,因为它过去非常流行的词儿,我这里用prototype js来在google里进行搜索
流行趋势比较
同时我们也可以从流行趋势里比较: JS框架比较或者jQuery最近趋势。
如何计算的
你可能注意到了不同搜索的Y轴变化量。数据是如何绘制的呢?
你在Y轴看到搜索量标示不是绝对的搜索流量,实际趋势计算在选择时间段1.0时你输入的第一个短语的平均搜索流量。以后的短语则相对于第一个来衡量。注意所有的数值都是相对于流量来说的。
原文来自: GBin1分享:Google趋势中显示jQuery是最流行的JS框架
javascript – 如何使用JS或JQuery / JS框架通过所有浏览器选项卡发送信号(触发事件)?
我在浏览器中有很多打开的网站标签.我如何通过所有这些发送信号(触发事件),也许有人知道关于那个的好文章/博客?示例:在一个选项卡中,我将登录该站点,几秒钟后,必须更改其他选项卡中的用户界面.执行此案例的最佳做法是什么建议?
对不起英语不好,我不是母语.
jquery – 哪个HTML5 Media JS框架最好?
以下是我到目前为止找到的两位候选人:
> http://videojs.com/
> http://mediaelementjs.com/
解决方法
jquery 图片截取工具jquery.imagecropper.js_jquery
除了jquery,本插件还引用了UI库,包括ui.draggable.js
ImageCropper 演示需要asp.net支持。测试通过
ImageCropper 下载 http://www.jb51.net/jiaoben/25688.html
插件用法:
var imageCropper = $(''#imgBackground'').imageCropper();
要注意的是此插件只应用在有src属性的img标签上。
通过插件输出的参数,即可以通过服务器端代码截取图片,比如:
$(''#imgCroppedImage'').attr(''src'', ''CropImage.ashx?p='' + imageCropper.settings.imagePath + ''&z='' + imageCropper.settings.zoomLevel + ''&t='' + imageCropper.settings.top + ''&l='' + imageCropper.settings.left + ''&w='' + imageCropper.settings.width + ''&h='' + imageCropper.settings.height + ''&'' + Math.random());