非常不错的不间断循环滚动类 兼容多浏览器

调用的方法:
首先你得把脚本链接到你的页面,或者直接调用下面这个链接也行。当然,最好还是下载到你自己的机器上。


代码如下:

<script type="text/javascript" src="http://www.aeroom.org/include/scripts/scrollingAD.js"></script>

下面是第一种使用方法,看起来似乎比较麻烦一点,但是只需要两行代码;


代码如下:

var sampleDiv = new scrollingAD("divId", 200, 100, "yellow", "up", 10, 2000, 20, true); 
sampleDiv.move();

这样将根据文档中 id="divId" 的某个 DIV 对象来创建一个不间断的循环滚动区域。该区域的宽度为 200px,高度为 100px, 背景颜色为黄色(不用担心你的英文不好,也可以用“#ff00ff”这样的格式),方向为向上滚动。其实你也可以选择向左滚动,只要把 "up" 改成 "left" 就行了。但是不支持向右和向下滚动,所以不用尝试 "right" 和 "down"——其实要实现这两个方向也很容易,不过个人觉得不太实用,所以就没做了——每滚动 1px 的延迟时间为 10ms,也就是理想状态下是每秒钟滚动 100px。每滚动 20px 暂停一次,每次暂停的时间是 2 秒。并且支持鼠标悬停。
上面提到的参数的排列顺序是必须严格遵守的,也就是说得按照下面的顺序来排列。如果你想偷懒,可以使用逗号略过: 


代码如下:

1、图层的 ID,必须的参数,不填或者拼写错误将会报错; 
2、滚动区域的宽度,默认值是 200px,所有的默认值都可以在 scrollingAD 里面修改; 
3、滚动区域的高度,默认值是 50px; 
4、背景颜色,默认值是 "transparent",也就是透明啦; 
5、方向,可选值 "up/left"; 
6、每滚动 1px 的延迟时间,默认值 20,单位是 ms——这个值越大滚动越慢; 
7、每滚动限定距离后停滞的时间,单位也是 ms,默认值 2000,也就是 2 秒啦——如果你不想停滞的话,把它设为 0 就行了; 
8、每两次停滞之间滚动的距离,默认值是一屏。也就是说如果你设定的方向是 "up" 的话,默认值即等于滚动区域的高度,反之方向为 "left",则默认值为滚动区域的宽度; 
9、是否悬停,默认是 true,这个你不填也没关系;

第二种方法是这样的:


代码如下:

var sampleDiv = new scrollingAD("divId"); 
sampleDiv.move(); 
这样使用的全部都是默认值,不过你应该会觉得必须改掉某个参数才行,那你可以这样: 
var sampleDiv = new scrollingAD("divId"); 
sampleDiv.width = 500; 
sampleDiv.height = 100; 
sampleDiv.bgColor = "red"; 
sampleDiv.direction = "left"; 
sampleDiv.delay = 10; 
sampleDiv.pauseTime = 1000; 
sampleDiv.size = 50; 
sampleDiv.isHover = false; 
sampleDiv.move();

当然你不需要像上面这样全部写出来,你只要修改必要的参数就行了。如果你使用了第一种方法来创建滚动区域,但是又在后面用这种方式修改过了,则以后面的为准。
需要注意的是,你应该使用这样的顺序来建立这个滚动区域:

效果演示

建立图层

当然你不需要像上面这样全部写出来,你只要修改必要的参数就行了。如果你使用了第一种方法来创建滚动区域,但是又在后面用这种方式修改过了,则以后面的为准。

然后调用脚本文件

function scrollingAD(_id, _width, _height, _bgColor, _direction, _delay, _pauseTime, _size, _isHover) {
this.id = _id;
this.width = _width;
this.height = _height;
this.bgColor = _bgColor;
this.direction = _direction;
this.delay = _delay;
this.pauseTime = _pauseTime;
this.size = _size;
this.object = null;
this.isMove = true;
if((this.id == "") || (this.id == null)) {
alert("必须输入对象的 ID 才能创建滚动区域!");
this.isMove = false;
return false;
}
if(document.getElementById(this.id)) {
this.object = document.getElementById(this.id);
} else {
window.alert("滚动区域创建失败!\n请确认 " + this.id + " 是否拼写错误。");
this.isMove = false;
return false;
}
}
scrollingAD.prototype.checkNumber = function(_attribute, defaultValue) {
if(isNaN(_attribute)) {
return defaultValue;
} else {
return ((typeof(parseInt(_attribute)) == "number") ? parseInt(_attribute) : defaultValue);
}
}
scrollingAD.prototype.move = function() {
if(this.isMove == false) return false;
var defaultWidth = 200;
var defaultHeight = 50;
var defaultDelay = 20;
var defaultPauseTime = 2000;
var defaultIsHover = true;
var defaultBgColor = "transparent";
var defaultDirection = "up";
this.width = this.checkNumber(this.width, defaultWidth);
this.height = this.checkNumber(this.height, defaultHeight);
this.delay = this.checkNumber(this.delay, defaultDelay);
this.pauseTime = this.checkNumber(this.pauseTime, defaultPauseTime);
this.isHover = (typeof(this.isHover) == "boolean") ? this.isHover : defaultIsHover;
if(this.direction == "left") {
this.size = this.checkNumber(this.size, this.width);
} else {
this.size = this.checkNumber(this.size, this.height);
}
if((this.bgColor == null) || (typeof(this.bgColor) == undefined)) {
this.bgColor = defaultBgColor;
} else {
this.bgColor = this.bgColor;
}
if((this.direction == null) || (typeof(this.direction) == undefined)) {
this.direction = defaultDirection;
} else {
this.direction = (this.direction.search(/(^up$)|(^left$)/gi) != -1) ? this.direction.toLowerCase() : defaultDirection;
}
// 创建滚动区域;
with(this.object) {
style.display = "block";
style.width = this.width + "px";
style.height = this.height + "px";
style.overflow = "hidden";
style.backgroundColor = this.bgColor;
}
if(this.direction == "up") {
this.object.innerHTML = "

" + this.object.innerHTML + "

" + "

" + this.object.innerHTML + "

";
} else {
this.object.innerHTML = "" + this.object.innerHTML + "" + "" + this.object.innerHTML + "";
}
if(document.getElementById(this.id)) {
var evalString;
if(this.direction == "up") {
evalString = "scrollToUp(\"" + this.id + "\", " + this.isHover + ", " + this.delay + ", " + this.size + ", " + this.pauseTime + ", 0) ";
} else {
evalString = "scrollToLeft(\"" + this.id + "\", " + this.isHover + ", " + this.delay + ", " + this.size + ", " + this.pauseTime + ", 0) ";
}
eval(evalString);
} else {
return false;
}
function pixelToNum(_string) {
//该函数用于去掉数值后面的px,并将之转化为数字。
if(_string.slice(_string.length - 2) == "px") {
return parseInt(_string.slice(0, (_string.length - 2)));
} else {
return _string;
}
}
function scrollToLeft(_id, _isHover, _delay, _size, _pauseTime, _s) {
var obj = document.getElementById(_id);
var mirror = document.getElementById(_id + "_mirror");
if(_size*(1 + parseInt(_s)) + pixelToNum(mirror.style.marginLeft) >= 0) {
var evalString =_id + "_timer = window.setTimeout(function() {scrollToLeft(\"" + _id + "\", " + _isHover + ", " + _delay + ", " + _size + ", " + _pauseTime + ", " + _s + ");}, " + _delay + ")";
if(_isHover) {
mirror.onmouseover = function() {document.getElementById(_id + "_isHover").value = 0;}
mirror.onmouseout = function() {document.getElementById(_id + "_isHover").value = 1;}
var step = parseInt(document.getElementById(_id + "_isHover").value);
mirror.style.marginLeft = (pixelToNum(mirror.style.marginLeft) - step) + "px";
eval("var " + evalString);
} else {
mirror.style.marginLeft = (pixelToNum(mirror.style.marginLeft) - 1) + "px";
eval("var " + evalString);
}
} else {
if(mirror.offsetWidth + pixelToNum(mirror.style.marginLeft) >= 0) {
_s += 1;
window.setTimeout(function() {scrollToLeft(_id, _isHover, _delay, _size, _pauseTime, _s)}, _pauseTime);
} else {
mirror.style.marginLeft = mirror.offsetWidth + pixelToNum(mirror.style.marginLeft) + "px";;
window.setTimeout(function() {scrollToLeft(_id, _isHover, _delay, _size, _pauseTime, 0)}, _pauseTime);
}
}
}
function scrollToUp(_id, _isHover, _delay, _size, _pauseTime, _s) {
var obj = document.getElementById(_id);
var mirror = document.getElementById(_id + "_mirror");
if(_size*(1 + parseInt(_s)) + pixelToNum(mirror.style.marginTop) >= 0) {
var evalString =_id + "_timer = window.setTimeout(function() {scrollToUp(\"" + _id + "\", " + _isHover + ", " + _delay + ", " + _size + ", " + _pauseTime + ", " + _s + ");}, " + _delay + ")";
if(_isHover) {
mirror.onmouseover = function() {document.getElementById(_id + "_isHover").value = 0;}
mirror.onmouseout = function() {document.getElementById(_id + "_isHover").value = 1;}
var step = parseInt(document.getElementById(_id + "_isHover").value);
mirror.style.marginTop = (pixelToNum(mirror.style.marginTop) - step) + "px";
eval("var " + evalString);
} else {
mirror.style.marginTop = (pixelToNum(mirror.style.marginTop) - 1) + "px";
eval("var " + evalString);
}
} else {
if(mirror.offsetHeight + pixelToNum(mirror.style.marginTop) >= 0) {
_s += 1;
window.setTimeout(function() {scrollToUp(_id, _isHover, _delay, _size, _pauseTime, _s)}, _pauseTime);
} else {
mirror.style.marginTop = mirror.offsetHeight + pixelToNum(mirror.style.marginTop) + "px";;
window.setTimeout(function() {scrollToUp(_id, _isHover, _delay, _size, _pauseTime, 0)}, _pauseTime);
}
}
}
}

最后建立滚动区域

//

如果脚本报错,可能是因为我的网站速度连接太慢的原因,只要刷新一下页面就行了。

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

提示:您可以先修改部分代码再运行
更新:
现在可以使用百分比来定义 size 参数了,像这样:
var sampleDiv = new scrollingAD("sampleDiv");
sampleDiv.size = "50%";// 注意,一定要加引号,否则会出错。
sampleDiv.move();
得到的效果就是一个循环只滚动两次,同理一次滚完一个循环的话,将 size 设置为 "100%" 就行了。不过不建议随意设置百分比,请尽量设置成与行数相符的数值,否则可能出现意外的空白。
当然,仍然支持数字:)

(0)

相关推荐

  • js不间断滚动的简单实现

    CSS: ul, li { margin: 0; padding: 0; } #scrollDiv { width: 300px; height: 25px; line-height: 25px; border-bottom: #4c8cd1 1px solid; overflow: hidden; } #scrollDiv li { height: 25px; padding-left: 10px; } JS: <script> function AutoScroll(obj) { $(ob

  • 不间断循环滚动效果的实例代码(必看篇)

    蛮优秀的一段效果代码,可以上下左右滚动,收藏了 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&q

  • 不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了

    /*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)          + 判断是否

  • JS实现图片的不间断连续滚动的简单实例

    js替代marquee实现图片无缝滚动 可能大家都碰到过,当marquee中滚动的是图片的时候,滚到终点的时候直接就跳回到起点了,而不像文字那样可以无缝滚动,下面介绍的是通过js来实现图片的无缝滚动. 先了解一下下面这几个属性: innerHTML: 设置或获取位于对象起始和结束标签内的 HTML scrollHeight: 获取对象的滚动高度. scrollLeft: 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop: 设置或获取位于对象最顶端和窗口中可见内容

  • JS不间断向上滚动效果代码

    复制代码 代码如下: <div id=demo style=overflow:hidden;height:139;width:232;background:#f4f4f4;color:#ffffff><div id=demo1><img src="http://www.lanrentuku.com/down/js/images/12460764740.jpg"><img src="http://www.lanrentuku.com/d

  • 非常不错的不间断循环滚动类 兼容多浏览器

    调用的方法: 首先你得把脚本链接到你的页面,或者直接调用下面这个链接也行.当然,最好还是下载到你自己的机器上. 复制代码 代码如下: <script type="text/javascript" src="http://www.aeroom.org/include/scripts/scrollingAD.js"></script> 下面是第一种使用方法,看起来似乎比较麻烦一点,但是只需要两行代码: 复制代码 代码如下: var sampleD

  • 原生JS绑定滑轮滚动事件兼容常见浏览器

    滑轮滚动页面的事件在网页特效中进场遇到,但是在不同浏览器下的实现方式又不同.下面我实现的方法,兼容常见浏览器. function getData(event){ var e = event || window.event; //获取滚动距离(FF每次滚动 data为3或者-3,其他为120或者-120) var data = e.detail || e.wheelDelta; alert(data); } //IE之外的绑定事件方法 if(document.addEventListener &&a

  • iOS UIScrollView滚动视图/无限循环滚动/自动滚动的实例代码

    我们都知道UIScrollView有一种很流畅的切换效果,结合UIPageControl的辅助展示效果,就可以完成一个很不错的产品介绍功能页面.下面给大家分享iOS UIScrollView滚动视图/无限循环滚动/自动滚动功能,具体代码如下所示: <UIScrollViewDelegate> #define WIDTH [[UIScreen mainScreen] bounds].size.width #define HEIGHT [[UIScreen mainScreen] bounds].

  • 多种JQuery循环滚动文字图片效果代码

    自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可以的,如下(效果图上传后都加速了,实际效果比这个要慢很多): html代码如下: <!doctype html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <

  • JavaScript代码实现图片循环滚动效果

    1.概述 循环滚动图片,不仅可以增添Web页面的动态效果,而且可以节省页面空间,有效地保证在有限的页面中显示更多的图片. 2.技术要点 主要应用setTimeout()方法实现图片的循环滚动效果.setTimeout()方法的语法格式如下: setTimeout(function,milliseconds,[arguments]) 参数说明: a. function:要调用的JavaScript自定义函数名称. b. Milliseconds:设置超时时间(以毫秒为单位). 功能:经过超时时间后

  • Android ViewPager实现智能无限循环滚动回绕效果

    android系统提供的ViewPager标准方式是左右可以自由滑动,但是滑动到最左边的极限位置是第一个page,滑动到最右边的位置是最后一个page,当滑动到最左或者最右时候,就不能再滑动/滚动了,这是Android系统默认的ViewPager实现方式. 但是有些情况下开发者可能希望ViewPager能够智能的无限循环滚动回绕,比如现在总共有编号1, 2, 3, 4, 5的5个Page. (1)当用户手指从右往左滚动到最右边/最后面的页面5时候,如果此时用户继续拖住ViewPager往左边滑动

  • android水平循环滚动控件使用详解

    本文实例为大家分享了android水平循环滚动控件的具体代码,供大家参考,具体内容如下 CycleScrollView.java package com.example.test; import android.content.Context; import android.graphics.Rect; import android.os.Handler; import android.util.AttributeSet; import android.view.GestureDetector;

  • iOS实现循环滚动公告栏

    本文实例为大家分享了iOS实现循环滚动公告栏的具体代码,供大家参考,具体内容如下 封装了一个继承于UIView的类,如下: #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface XtayNoticeScrollView : UIView - (instancetype)initWithFrame:(CGRect)frame titleArray:(NSArray<NSString *> *)titleArray; -

  • Unity3d实现无限循环滚动背景

    在游戏项目中我们常常看到商城的广告牌,几张广告图片循环滚动,类似跑马灯,现在我将讨论一种实现方法,并提供一个管理类,大家可以直接使用. 实现原理:背景图片循环滚动的原理很简单:两张图片向一个方向移动,当达某张图片到临界区域时将图片放在后面,依次循环. 在实际项目中,广告牌显示的图片数量不确定,例如某个假期活动会上很多新品,此时我们需要动态的创建显示的图片(一般在配置表读取数据),如果需要显示分类标签还得动态生成分类标签. 综上所述,一个完整的广告牌组件应该具有以下功能: - 无限循环的滚动背景图

随机推荐