再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)

所属分类: 网络编程 / JavaScript 阅读数: 1760
收藏 0 赞 0 分享
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)

/*MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类) Ver 1.6*\

 制作时间:2006-08-29 (Ver 0.5)
 发布时间:2006-08-31 (Ver 0.8)
 更新时间:2007-01-31 (Ver 1.6)
 更新说明: + 加入功能 * 修正、完善
        1.6.070131
                + 禁止鼠标控制暂停或继续 (将第9个参数设置为-1或者动态赋值将ScrollSetp设置为-1)
                + 判断是否可以滚动 (若内容区域小于显示区域,则自动取消滚动)
                + 跳过初始化错误 (避免引起其它滚动的停止)
                + 默认值 (除容器ID必选外,其他参数均可根据情况进行选择设置)
                + 参数动态赋值 (方向可用英文表示top|bottom|left|right,使其更直观、方便)
                * 文字滚动不准确 (本次更新主要目的解决此Bug,感谢周珺参与测试)
        1.4.061211
                + 鼠标悬停改变滚动方向 (鼠标悬停控制左右滚动)
                * 由于文档下载过慢而导致获取的高度/宽度不准确
                * 浏览器兼容问题 (IE、FF、Opera、NS、MYIE)
        1.2.060922
                + 指定范围间歇滚动
                * 程序调整
                * 连续间歇滚动停止的错误
        1.0.060901
                + 向下、向右滚动
                + 开始等待时间
                + 连续滚动
                * 调整时间单位
                * 滚动误差
                * 随机死循环
                * 加强性能
                * 程序优化
        0.8.060829
                  翻屏不间断向上、向左滚动

 演示地址:http://www.popub.net/script/MSClass.html
 下载地址:http://www.popub.net/script/MSClass.js

 应用说明:页面包含<script type="text/javascript" src="MSClass.js"></script>

        创建实例:
                //参数直接赋值法
                new Marquee("marquee")
                new Marquee("marquee","top")
                ......
                new Marquee("marquee",0,1,760,52)
                new Marquee("marquee","top",1,760,52,50,5000)
                ......
                new Marquee("marquee",0,1,760,104,50,5000,3000,52)
                new Marquee("marquee",null,null,760,104,null,5000,null,-1)

                //参数动态赋值法
                var marquee1 = new Marquee("marquee")        *此参数必选
                marquee1.Direction = "top";        或者        marquee1.Direction = 0;
                marquee1.Step = 1;
                marquee1.Width = 760;
                marquee1.Height = 52;
                marquee1.Timer = 50;
                marquee1.DelayTime = 5000;
                marquee1.WaitTime = 3000;
                marquee1.ScrollStep = 52;
                marquee1.Start();

        参数说明:
                ID                "marquee"        容器ID                (必选)
                Direction        (0)                滚动方向        (可选,默认为0向上滚动) 可设置的值包括:0,1,2,3,"top","bottom","left","right" (0向上 1向下 2向左 3向右)
                Step                (1)                滚动的步长        (可选,默认值为2,数值越大,滚动越快)
                Width                (760)                容器可视宽度        (可选,默认值为容器初始设置的宽度)
                Height                (52)                容器可视高度        (可选,默认值为容器初始设置的高度)
                Timer                (50)                定时器                (可选,默认值为30,数值越小,滚动的速度越快,1000=1秒,建议不小于20)
                DelayTime        (5000)                间歇停顿延迟时间(可选,默认为0不停顿,1000=1秒)
                WaitTime        (3000)                开始时的等待时间(可选,默认或0为不等待,1000=1秒)
                ScrollStep        (52)                间歇滚动间距        (可选,默认为翻屏宽/高度,该数值与延迟均为0则为鼠标悬停控制,-1禁止鼠标控制)
 使用建议:
                1、建议直接赋予容器的显示区域的宽度和高度,如(<div id="marquee" style="width:760px;height:52px;">......</div>)
                2、建议为容器添加样式overflow = auto,如(<div id="marquee" style="width:760px;height:52px;overflow:auto;">......</div>)
                3、为了更准确的获取滚动区域的宽度和高度,请尽可能将各滚动单位直接赋予正确宽高度
                4、对于TABLE标记的横向滚动,需要对TABLE添加样式display = inline,如(<div id="marquee" style="width:760px;height:52px;overflow:auto;"><table style="display:inline">......</table></div>)
                5、对于翻屏滚动或间歇滚动,要注意各滚动单位间的间距,同时需要对容器的可视高度和可视宽度做好准确的设置,对于各滚动单位间的间距可以通过设置行间距或者单元格的高宽度来进行调整
                6、对于LI自动换行的问题暂时没有更好的解决办法,建议将其转换成表格(TABLE)的形式来达到同等的效果
                7、针对横向滚动的文字段落,如果最末端是以空格" "结束的,请将空格" "转换成" "
                8、鼠标悬停滚动思想源自Flash,所以有一定的局限性(容器内仅允许用图片<img>或者带链接的图片<a><img></a>的形式,并需要禁止其自动换行)

 感  谢:
        周珺 zhoujun#yuchengtech.com (文字滚动跳行的bug) 2007/01/31
        自本程序发布以来,收到不少朋友的邮件,提出了很多意见和建议,感谢大家的支持!
很不错。

不过演示代码的new Marquee("marquee",0,1,760,52,50,5000,3000)那么多参数看了让人有点迷糊,呵呵,做成这种模式可能让人看得懂一些:
复制代码 代码如下:

function Marquee() 

    this.ID = document.getElementById(arguments[0]); 
    this.Direction = arguments[1]; 
    this.Step = arguments[2]; 
    this.Width = arguments[3]; 
    this.Height = arguments[4]; 
    this.Timer = arguments[5]; 
    this.WaitTime = arguments[6]; 
    this.StopTime = arguments[7]; 
    this.CTL = this.StartID = this.Stop = this.MouseOver = 0; 
    this.ID.style.overflowX = this.ID.style.overflowY = "hidden"; 
    this.ID.noWrap = true; 
    this.ID.style.width = this.Width; 
    this.ID.style.height = this.Height; 
    this.ID.innerHTML += this.ID.innerHTML; 
}  


然后使用:
复制代码 代码如下:

var m = new Marquee; 
m.ID = document.getElementById("marquee"); 
m.Direction = 0; 
m.Step = 1; 
m.Width = 760; 
// ...... 
m.Start(m, m.Timer, m.WaitTime, m.StopTime); 

m.Start的参数好像都和m有关,可以省略掉?
更多精彩内容其他人还在看

Angular使用Md5加密的解决方法

这篇文章主要介绍了Angular使用Md5加密的解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

详解JS构造函数中this和return

本文通过实例代码给大家介绍了JS构造函数中this和return,需要的朋友参考下吧
收藏 0 赞 0 分享

ES6中Array.find()和findIndex()函数的用法详解

ES6为Array增加了find(),findIndex函数。find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined,而findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。下面通过实例详解,需要的朋友参考下吧
收藏 0 赞 0 分享

JS闭包的几种常见形式实例详解

本文通过实例代码给大家详细介绍了js闭包的几种常见形式,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下
收藏 0 赞 0 分享

ES6中Array.copyWithin()函数的用法实例详解

ES6为Array增加了copyWithin函数,用于操作当前数组自身,用来把某些个位置的元素复制并覆盖到其他位置上去。下面重点给大家介绍ES6中Array.copyWithin()函数的用法,需要的朋友参考下
收藏 0 赞 0 分享

Javascript 严格模式use strict详解

严格模式:由ECMA-262规范定义的JavaScript标准,对javascrip的限制更强。这篇文章主要介绍了Javascript 严格模式use strict详解 ,需要的朋友可以参考下
收藏 0 赞 0 分享

引入JavaScript时alert弹出框显示中文乱码问题

今天在HTML中引入JavaScript文件运行时,alert弹出的提示框中文显示为乱码,怎么解决此问题呢?下面小编给大家带来了引入JavaScript时alert弹出框显示中文乱码问题的解决方法,一起看看吧
收藏 0 赞 0 分享

AngularJs 延时器、计时器实例代码

这篇文章主要介绍了AngularJs 延时器、计时器实例代码,需要的朋友可以参考下
收藏 0 赞 0 分享

JS分页的实现(同步与异步)

这篇文章主要介绍了JS分页的实现(同步与异步),需要的朋友可以参考下
收藏 0 赞 0 分享

Angularjs自定义指令实现分页插件(DEMO)

由于最近的一个项目使用的是angularjs1.0的版本,涉及到分页查询数据的功能,后来自己就用自定义指令实现了该功能,下面小编把实例demo分享到脚本之家平台,需要的朋友参考下
收藏 0 赞 0 分享
查看更多