新浪微博的文字滚动更新效果

看新浪微博里面更新用户发布消息的效果不错,找了下代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>类似新浪微博的文字滚动效果</title>
<style>
#ul1 {background:white; margin:0px; padding:0px; width:500px; height:300px; border:1px solid black; overflow:hidden;}
li {border-bottom:1px dashed #CCC; padding:15px 10px 3px 10px; margin:0px; list-style:none;}
</style>
<script type="text/javascript">//调用的数据就放在这个数组里
var arr=['洗脸也能抽筋??', '好冷啊', '一口气睇晒 《碟影重重》三部,头痛痛。一如既往地喜欢特务男,哈哈,有脑有身手', '我靠近你,不是因为你什么都好,不是因为你能给我一个安心而不错的未来,不是因为你是我的老公,不是因为我觉得我们肯定这一辈子会这样好好走下去,不是因为再找一段感情代价太大,而是因为,我爱你,我觉得看到你,就会心动。', '我承认我是个没有鼓励就没有动力的人,缺乏太多毅力。等过了这个冬天。也许我真的能把自己的心收拾干净。空出心里最重要的位置。给自己未来的新娘。剩下的空间,全是梦想,家庭和朋友。'];
var t=setInterval(function(){
 var sTxt=arr.shift();
 createDom(sTxt);
 arr.push(sTxt);
},2000)
var bPause=false;
function startMove(obj,attr,iTarget,fnMoveEnd)
{
 if(obj.timer)
 {
  clearInterval(obj.timer);
 }
 obj.timer=setInterval(function(){
  if(bPause)
  {
   return;
  }
  doMove(obj,attr,iTarget,fnMoveEnd);
 },30)
};
function getAttr(obj,attr)
{
 if(obj.currentStyle)
 {
  return obj.currentStyle[attr];
 }
 else
 {
  return document.defaultView.getComputedStyle(obj,false)[attr];
 }
}
function doMove(obj,attr,iTarget,fnMoveEnd)
{
 var iSpeed=0;
 var weizhi=0;
 if(attr=="opacity")
 {
  weizhi=parseFloat(getAttr(obj,"opacity"));
 }
 else
 {
  weizhi=parseFloat(getAttr(obj,attr))
 }
 if(Math.abs(iTarget-weizhi)<1/100)
 {
  clearInterval(obj.timer);
  obj.timer=null;
  if(fnMoveEnd)
  {
   fnMoveEnd();
  }
 }
 else
 {
  iSpeed=(iTarget-weizhi)/8;
  if(attr=="opacity")
  {
   obj.style.filter="alpha(opacity:"+(weizhi+iSpeed)*100+")";
   obj.style.opacity=weizhi+iSpeed;
  }
  else
  {
   iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
   obj.style[attr]=weizhi+iSpeed+"px";
  }
 }
};
function leaveMessage()
{
 var oText=document.getElementById("txt1");
 createDom(oText.value);
 oText.value="";
};
function createDom(sTxt)
{
 var oUl=document.getElementById("ul1");
 var aLi=oUl.getElementsByTagName("li");
 var oLi=document.createElement("li");
 
 var iHeight=0;
 oLi.innerHTML=sTxt;
 oLi.style.filter="alpha(opacity:0)";
 oLi.style.opacity=0;
 
 if(aLi.length)
 {
  oUl.insertBefore(oLi,aLi[0])
 }
 else
 {
  oUl.appendChild(oLi)
 }
 
 //开始运动
 iHeight=oLi.offsetHeight;
 oLi.style.height="0px";
 oLi.style.overflow='hidden';
 startMove(oLi,"height",iHeight,function(){
  startMove(oLi,"opacity",1)
 })
 oUl.onmouseover=function()
 {
  bPause=true;
 };
 oUl.onmouseout=function()
 {
  bPause=false;
 }
};
</script>
</head>
<body>
<ul id="ul1"></ul>
</body>
</html>

 


posted @ 2011-09-19 19:45  红油小生  Views(1148)  Comments(6Edit  收藏  举报