【原创】垂直无缝滚动图片(兼容性好)实例教程

本文详细解析了一个JavaScript实现的垂直无缝滚动图片效果,包括代码分析、原理介绍和关键函数解释,如setTimeout和clearTimeout的使用,以及如何在不同浏览器中保持良好的兼容性。同时,提供了示例代码和实际运行的网页链接,帮助读者理解和实现类似滚动效果。
摘要由CSDN通过智能技术生成
 

原代码来源:YAHOO中国
演示地址:http://www.yaohaixiao.com/effects/scrollVertical.html
下载地址:scrollVertical.rar

 

我很久前在YAHOO上扣的代码,兼容性很好,在Windows下的主流浏览器中可以正常运行。

大家先不要急着下载代码,你随时都可以下,我们来分析下代码(代码中我已经写了很详细的注释),要之其所以然,在解读别人的代码中学习提高自己,然后可以灵活运用,这个才是我将这个效果贴出来的主要目的,代码如下:

 

scrollver.js
[code]
scrollVertical.prototype.scrollArea=null;      // 滚动的区域
scrollVertical.prototype.scrollMsg=null;       // 要滚动的内容
scrollVertical.prototype.unitHeight=0;         // 单独一行滚动内容的高度(程序中通过过的要滚动行的一个节点的offsetHeight获得)
scrollVertical.prototype.msgHeight=0;          // 整个滚动内容的高度
scrollVertical.prototype.copyMsg=null;         // 复制滚动内容(程序中使用复制scrollMsg.innerHTML来获得的)
scrollVertical.prototype.scrollValue=0;        // 滚动的值
scrollVertical.prototype.scrollHeight=0;       // 滚动高度
scrollVertical.prototype.isStop=true;          // 停止滚动
scrollVertical.prototype.isPause=false;        // 暂停滚动
scrollVertical.prototype.scrollTimer=null;     // 滚动计时器
scrollVertical.prototype.speed=2000;           // (默认)滚动的时间间隔2秒

/**
* @method isMoz - 判断是否为Mozilla系列浏览器
*/
scrollVertical.prototype.isMoz = function(){
return navigator.userAgent.toLowerCase().indexOf('gecko') > 0;
};

/**
* @method play - 滚动信息的处理方法(函数)
* @param {Object} o - 滚动类
*/
scrollVertical.prototype.play = function(o){
var s_msg = o.scrollMsg;
var c_msg = o.copyMsg;
var s_area = o.scrollArea;
var msg_h = o.msgHeight;

var anim = function(){
// 如果已经开始计时(间隔时间执行向上滚动),
// 就停止它(以免无限制执行,耗系统资源)。
if (o.scrollTimer) {
clearTimeout(o.scrollTimer);
}
// 如果暂停了滚动(鼠标放到了滚动层上)
// 开始以10毫秒的时间间隔运行滚动
if (o.isPause) {
o.scrollTimer = setTimeout(anim, 10);
return;
}
// 当显示完所有信息后(这时滚动的距离就等于要滚动信息的高度msg_h)
// 这时又重新开始滚动,将滚动距离清零
if (msg_h - o.scrollValue <= 0) {
o.scrollValue = 0;
}
else {
o.scrollValue += 1;
o.scrollHeight += 1;
}
// 根据浏览器的不同,处理滚动
if (o.isMoz) { // Mozilla引擎浏览器
s_area.scrollTop = o.scrollValue;
}
else { // 其余的浏览器则使用控制CSS样式处理滚动
s_msg.style.top = -1 * o.scrollValue + “px”;
c_msg.style.top = (msg_h - o.scrollValue) + “px”;
}
// 滚动高度等于显示滚动区域高度时(滚动完一行,一行内容全部显示)
// 暂停4秒中,然后再开始执行下依次滚动。
if (o.scrollHeight % s_area.offsetHeight == 0) {
o.scrollTimer = setTimeout(anim, o.speed);
}
else {
// 在两行内容之间过度滚动时,每10豪秒上升1px
o.scrollTimer = setTimeout(anim, 10);
}
};
// 执行滚动
anim();
};

/**
* scrollVertical 垂直滚动的构造函数
* @param {Object} disp   -  必须  显示滚动区域的DOM节点(或节点ID)
* @param {Object} msg    -  必须  被显示的信息的DOM节点(或节点ID)
* @param {string} tg     -  可选  以什么标记为一行的标签名称(tagName)
*/
function scrollVertical(disp, msg, tg){
// 给在之前定义的this.scr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值