无间隔纵向滚动公告栏

发表于:2007-07-01来源:作者:点击数: 标签:
!--- 无间隔纵向滚动公告栏 绝无marquee的间隔情况 作者:唠叨 e-mail:czjsz_ah@stats.gov.cn 2002.12 --- span id=_tv_box style=width:150;height:60;overflow:hidden onMouseOver=_tv_start=false onMouseOut=_tv_start=true span id=_tv_item style=posi
<!---
  无间隔纵向滚动公告栏
  绝无marquee的间隔情况
  作者:唠叨
  e-mail:czjsz_ah@stats.gov.cn
  2002.12
--->

<span id="_tv_box" style="width:150;height:60;overflow:hidden" onMouseOver="_tv_start=false" onMouseOut="_tv_start=true">
<span id="_tv_item" style="position:relative;top:0">
<font color=red>您好!朋友</font><br>
1.欢迎光临dev-club<br>
2.<a href="http://www.dev-club.com/club/bbs/bbsView.asp?boardid=31">进入php编程</a><br>
3.进入joy asp<br>
4.进入script<br>
5.在dev-club您将获得最好的帮助<br>
</span>
</span>

<script>
var _tv_moveSpeed = 50; // 速度控制,两次移动的间隔ms
var _tv_movestep = 1;   // 速度控制,每次的移动量px
var _tv_post = 0;       // 工作变量,当前偏移量
var _tv_tvheight = 0;   // 工作变量,移动区域的总高度
var _tv_start = true;   // 工作变量,运动状态控制
/**
* 移动控制
* 首次调用需有参数
*/
function tv_item_move(v) {
  if(v) {  // 第一次进入
    _tv_item.innerHTML += _tv_item.innerHTML; // 复制移动区域内容,这是本算法的关键
    _tv_tvheight = _tv_item.offsetHeight;     // 获取移动区域的总高度
  }
  if(_tv_start) {  // 是移动状态
    _tv_post -= _tv_movestep;  // 计算偏移
    if(_tv_post+_tv_tvheight < _tv_box.offsetHeight)  // 若移动后将露出底部
      _tv_post += _tv_tvheight/2;  // 将偏移上调一段
    _tv_item.style.pixelTop = _tv_post;  // 设置偏移
  }
  setTimeout(@#tv_item_move()@#,_tv_moveSpeed); // 启动定时器
}
/*** 启动纵向滚动 ***/
tv_item_move(1);
</script>

原文转自:http://www.ltesting.net