用jquery写了一个弹幕的小功能,供大家参考学习。
前端显示
<span style="font-size:18px;"><div class="boxDom" id="boxDom"> <div class="idDom" id="idDom"> <div class="content"> <p class="title">吐槽:</p> <input type="text" class="text" id="text" /> <button type="button" class="btn" id="btn">发射</button> </div> </div> </div></span> 样式 <span style="font-size:14px;">html,body{margin:0px;padding:0px;width: 100%;height:100%;font-family: "微软雅黑";font-size: 62.5%;background: #ccc;} .boxDom { width:100%; height: 100%; position: relative; overflow: hidden; } .idDom { width: 100%; height: 60px; 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; } .text { border:none; width:300px; height: 30px; border-radius: 5px; font-size: 2.4em; } .btn { width:60px; height: 30px; background: #f90000; border:none; color:#fff; font-size: 2.4em; } .string { width:300px; height: 40px; position: absolute; overflow: hidden; color:#000; font-size: 4em; line-height: 1.5em; cursor: pointer; white-space:nowrap; }</span>JS
<span style="font-size:14px;"> $(function(){ var pageW=parseInt($(document).width()); //获取页面宽度 //alert(pageW); var pageH=parseInt($(document).height()); //获取页面高度 var boxDom=$("#boxDom"); var btnDom=$("#btn"); var Top,Right; var width; width=pageW; var colorArr=["#cfaf12","#12af01","#981234","#adefsa","#db6be4","#f5264c","#d34a74"]; btnDom.bind("click",auto); function auto(){ var creSpan=$("<span class='string'></span>"); var text=$("#text").val(); //alert(text); creSpan.text(text); //alert(creSpan.text()); Top=parseInt(pageH*(Math.random())); var num=parseInt(colorArr.length*(Math.random())); if(Top>pageH-90){ Top=pageH-90; } //creSpan.css({"top":Top,"right":-300,"color":colorArr[num]}); creSpan.css({"top":Top,"right":-300,"color":getRandomColor()});//扩展字幕颜色 boxDom.append(creSpan); var spanDom=$("#boxDom>span:last-child"); //alert(spanDom.html()); spanDom.stop().animate({"right":pageW+300},10000,"linear",function(){ $(this).remove(); }); } function getRandomColor(){ return '#' + (function(h){ return new Array(7 - h.length).join("0") + h; })((Math.random() * 0x1000000 << 0).toString(16)); } });</span>看一张效果图:效果还可以,当然还有需要改进的地方,比如弹幕出现在了底部的需要重新计算Top的值;另外想抽时间利用Ajax设计数据库,对发言的数据进行后台保存。
