兼容多浏览器的字幕特效Marquee的通用js类_链接特效

Marquee.js

参数说明:  
demo  字幕区域标签(div)的ID; 
demo1/demo2  显示内容标签(div或td)的ID   demo1为原始内容,demo2是它的拷贝;  
direction 字幕方向(up,down,left,right) ; 
delay 字幕播放的延迟时间(毫秒); 
step 字幕播放的步长(即pix,步长越小,如step=1,滚动越平滑)

function Marquee (demo, demo1, demo2, direction, delay, step)
{
 direction = direction.toLowerCase();

 if(((direction == "up" || direction == "down") && ($(demo1).offsetHeight > $(demo).offsetHeight)) || ((direction == "left" || direction == "right") && ($(demo1).offsetWidth > $(demo).offsetWidth)))
 {
  $(demo2).innerHTML = $(demo1).innerHTML;
  if(direction == "down")
   $(demo).scrollTop = 2 * $(demo1).offsetHeight - $(demo).offsetHeight;
  if(direction == "right")
   $(demo).scrollLeft = 2 * $(demo1).offsetWidth - $(demo).offsetWidth;
 }
 else
  return;

 var flag = true;
 var speed = delay == null? 1 : parseInt(delay);
 var amount = step == null? 1 : parseInt(step);

 var Marquee = function ()
 {
  switch(direction)
  {
   case "up":
    if($(demo2).offsetTop - $(demo).scrollTop <= 0)
     $(demo).scrollTop -= $(demo1).offsetHeight;
    else
     $(demo).scrollTop += amount;
    break;
   case "down":
    if($(demo1).offsetTop - $(demo).scrollTop >= 0)
     $(demo).scrollTop += $(demo2).offsetHeight;
    else
     $(demo).scrollTop -= amount;
    break;
   case "left":
    if($(demo2).offsetWidth - $(demo).scrollLeft <= 0)
     $(demo).scrollLeft -= $(demo1).offsetWidth;
    else
     $(demo).scrollLeft += amount;
    break;
   case "right":
    if($(demo).scrollLeft <= 0)
     $(demo).scrollLeft += $(demo2).offsetWidth;
    else
     $(demo).scrollLeft -= amount;
    break;
   default:break;
  }
 }

 var timer = setInterval(Marquee,speed);

 var play = function ()
 {
  if(flag)
  {
   clearInterval(timer);
   timer = setInterval(Marquee, speed);
  }
 }

 $(demo).onmouseover = function ()
 {
  if(flag)
   clearInterval(timer);
 }

 $(demo).onmouseout = function ()
 {
  if(flag)
   timer = setInterval(Marquee, speed);
 }

 this.delay = function (s)
 {
  speed = s == null? 50 : parseInt(s);
  play();
 }

 this.step = function (s)
 {
  amount = s == null? 1 : parseInt(s);
  play();
 }

 this.start = function ()
 {
  if(!flag)
  {
   flag = true;
   play();
  }
 }

 this.stop = function ()
 {
  if(flag)
  {
   flag = false;
   clearInterval(timer);
  }
 }

 this.direction = function (s)
 {
  s = s.toLowerCase();
  if( s == direction )
   return;
  if(s == "down" && direction == "up" )
   direction = s;
  if(s == "up" && direction == "down")
   direction = s;
  if(s == "right" && direction == "left")
   direction = s;
  if(s == "left" && direction == "right")
   direction = s;
  if (s == direction)
   play();
 }
}

 上面js里用到的$或$F,如果你用过prototype.js的话,把它添加进去就行了; 否则你需要先引用下面的js文件: Ruby.js  (从prototype.js里截过来的 呵呵)

function Ruby ()
{
}

if (!Array.prototype.push) { 
  Array.prototype.push = function() { 
      var startLength = this.length; 
      for (var i = 0; i < arguments.length; i++) 
      this[startLength + i] = arguments[i]; 
     return this.length; 
  } 
}

$ = function ()
{
  var elements = new Array(); 

  for (var i = 0; i < arguments.length; i++) { 
    var element = arguments[i]; 
    if (typeof element == ''string'') 
      element = document.getElementById(element); 

    if (arguments.length == 1) 
      return element; 

    elements.push(element); 
  } 

  return elements;
}

$F = function ()
{
 if(arguments.length == 1)
  return document.getElementById(arguments[0]).value;
 else
 {
  var elements = new Array();
  for(var i = 0;i< arguments.length; i++)
  {
   elements.push(document.getElementById(arguments[i]).value);
  }
  return elements;
 }
}

 到这里,js文件已经搞定了,开始写HTML代码:

(1)先添加css样式,如果你不想滚动字幕里的内容被无故撑大的话(有时候)
<style>
.wrap{word-break:break-all;overflow:hidden}
</style>

(2)添加js文件  -->用了prototype.js的更好,替换掉Ruby.js   :)
<script src="Ruby.js"></script>
<script src="Marquee.js"></script>

(3)添加字幕区域内容
1. 向上或向下滚动    

<div id="d1" style="overflow:hidden;height:200px;width:90px">
   <div id="d11" width="100%" class="wrap">
    =顶部=<br>动感地带资费攻略1 动感地带资费攻略2<br>=底部=
   </div>
   <div id="d12" width="100%" class="wrap"></div>
  </div>
  <script>var obj1 = new Marquee("d1","d11","d12","up");</script>
由于字幕d1的height=200,而d11的内容高度不足200,故字幕默认不会滚动,要实现滚动的话,只需d11的height>200就行了,故只需在d11的里面再放个空div就行了,让它的height=200; 如果d11的内容高度大于了200px,则字幕区域d1将无间断滚动

2. 向左或向右滚动

<div id="d2" style="overflow:hidden;width:500">
  <table>
   <tr>
    <td id="d21">
     <nobr>
      [开始]动感地带资费攻略1 动感地带资费攻略2 动感地带资费攻略3 动感地带资费攻略4 动感地带资费攻略5 动感地带资费攻略6 动感地带资费攻略7 动感地带资费攻略8 动感地带资费攻略9 动感地带资费攻略10 动感地带资费攻略11 动感地带资费攻略12 动感地带资费攻略13 动感地带资费攻略14 动感地带资费攻略15 动感地带资费攻略16 动感地带资费攻略17 动感地带资费攻略18 动感地带资费攻略19 动感地带资费攻略20[结束] 
     </nobr>
    </td>
    <td id="d22"></td>
   </tr>
  </table>
 </div>
 <script>var obj2 = new Marquee("d2","d21","d22","left");</script>

实现原理同上,至于为什么这里要用table而不用div,是因为div在默认情况只能判断height,而不能判断width,而table却恰恰相反,上面用到的nobr标签也是必需的,防止字幕自动换行!

附:  更改延迟播放速度 obj2.delay(50); 或 obj2.delay("50");
  更改播放步长  obj2.step(50); 或 obj2.step("50");
  停止播放 obj2.stop();  继续播放 obj2.start();
  更改播放方向(同类型方向)  obj2.direction("right");

时间: 2024-09-21 03:07:13

兼容多浏览器的字幕特效Marquee的通用js类_链接特效的相关文章

友情链接横向文字上下间隙循环滚动JS效果_链接特效

瓮安涉案女孩系溺亡 体彩中心突发人命案 A股上半年全球最差 上海数字电视免费开播 五月份乘用车销量探底 塔罗占卜王菲会复出 七月精彩运势全攻略 高考试题及历年分数线 暗黑3视频图片全欣赏 爱墙留言祈福地震灾区 瓮安涉案女孩系溺亡 体彩中心突发人命案 A股上半年全球最差 上海数字电视免费开播 五月份乘用车销量探底 塔罗占卜王菲会复出 七月精彩运势全攻略 高考试题及历年分数线 暗黑3视频图片全欣赏 爱墙留言祈福地震灾区

显示页面的所有链接的js代码_链接特效

连接1 连接1 连接1 连接1 连接1 连接1 连接1

兼容所有浏览器的设为首页收藏本站js代码

 设为首页 和 收藏本站js代码 兼容IE,chrome,ff,360等 将以下代码放到首页 或者新建js文件   页面调用: <a href="ja vasc ript:void(0);" on click="SetHome(this,'http://www.php2.cc');">设为首页</a> <a href="ja vasc ript:void(0);" on click="AddFavorite

兼容所有浏览器的“获取系统当前时间”的JS代码

提示:您可以先修改部分代码再运行 当前时间: 提示:您可以先修改部分代码再运行

用CSS打造多彩文字链接_链接特效

CSS打造多彩文字链接 一. 初级链接样式 1. 普通链接 2. 无下划线链接 3. 双划线链接 4. 删除线链接 二. 进阶链接样式风格 1. 另类下划线的原理 2. 定制下划线色彩 3. 定制下划线距离 4. 定制下划线长度和对齐方式 5. 定制双下划线 三. 高级链接样式风格 1. 定义块状链接 2. 定义按钮风格的链接 3. 定义特效链接 4. 静态背景切换链接 5. 动态背景切换链接 网页教学网改编

功能很全的精品JS计算器_典型特效

网页特效|XFBBS.Com|---功能很全的精品计算器 十六进制 十进制 八进制 二进制 角度制 弧度制 上档功能 双曲函数

js实现的很酷的连接提示效果_链接特效

网页特效 这是个不错的网站 教程下载 很好的下载站点,速度快 程序源码 编程爱好者的乐园 文章教程 这里有Delphi的好东东 中国软件 程序员必看 刷新一次,再看看效果.有好几种哦

js实现类似光照的炫彩文字渐变视觉冲击效果_链接特效

欢迎使用 Internet 信息服务! Microsoft Internet 信息服务是一个桌面 Web 服务器,使用它,您可以从自己的计算机上发布个人主页,并把您计算机上的文档共享到整个网络. 在将站点上载到 Internet 提供商之前,也可以将 IIS 用作开发平台.

可左右平滑滚动的产品展示效果_链接特效

美女小凡最新夏装éŸå›½äººæ°”小耳环3万6超值装ä¿88平牛干巴敲开财富门4K至7K高性能本本7万装ä¿102å¹³åšæˆ¿æœ€æ–°å°è½¦èŠ‚æ²¹ä¸ºä¸»çƒ­é—¨é¡¹ç› BT烤翅要显瘦就这么ç¿ï¼