kerwk 发表于 2010-9-5 17:35:42

模版里添加连续滚动代码技巧,兼容多浏览器

在这里共享下连续滚动代码,兼容多浏览器,但愿能够帮助制作模版的朋友,废话少说,直接如题看下面:

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

JS文件如下:
[*]
[*]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 += $(demo2).offsetHeight;
[*]    else
[*]   $(demo).scrollTop -= amount;
[*]    break;
[*]   case "left":
[*]    if($(demo2).offsetWidth - $(demo).scrollLeft 复制代码
上面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 复制代码
到这里,js文件已经搞定了,开始写HTML代码:

(1)先添加css样式,如果你不想滚动字幕里的内容被无故撑大的话(有时候)
[*]
[*]
[*].wrap{word-break:break-all;overflow:hidden}
[*]
[*]复制代码
(2)添加js文件-->用了prototype.js的更好,替换掉Ruby.js   
http://bbs.destoon.com/static/image/smiley/default/smile.gif

[*]
[*]
[*]
[*]
[*]
[*]复制代码(3)添加字幕区域内容
1. 向上或向下滚动   
[*]
[*]
[*]
[*]   
[*]    =顶部=
科瑞网酷主机:高配置、低价位,欢迎选购
=底部=
[*]   
[*]   
[*]
[*]复制代码
由于字幕d1的height=200,而d11的内容高度不足200,故字幕默认不会滚动,要实现滚动的话,只需d11的height>200就行 了,故只需在d11的里面再放个空div就行了,让它的height=200; 如果d11的内容高度大于了200px,则字幕区域d1将无间断滚动
2. 向左或向右滚动
[*]
[*]
[*]
[*]   
[*]   
[*]   
[*]      [开 始]科瑞网酷主机:高配置、低价位,欢迎选购,科瑞网酷主机:高配置、低价位,欢迎选购,科瑞网酷主机:高配置、低价位,欢迎选购,科瑞网酷主机:高配置、低价位,欢迎选购,科瑞网酷主机:高配置、低价位,欢迎选购,科瑞网酷主机:高配置、低价位,欢迎选购,科瑞网酷主机:高配置、低价位,欢迎选购,科瑞网酷主机:高配置、低价位,欢迎选购[结束] 
[*]   
[*]   
[*]   
[*]   
[*]
[*]
[*]
[*] 复制代码
实现原理同上,至于为什么这里要用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");

中国采购城 发表于 2010-9-5 18:08:58


楼主辛苦了 发个演示看看。。。。。。。。。

ysldys 发表于 2010-9-5 18:42:37


好多看不懂的啊,我太烂了,呵呵

guzhou79 发表于 2011-2-12 11:41:16


强,要好好学习了
http://bbs.destoon.com/static/image/smiley/default/victory.gif

guzhou79 发表于 2011-2-14 20:36:22


就是不知道怎么安装,高手说详细点呀?
页: [1]
查看完整版本: 模版里添加连续滚动代码技巧,兼容多浏览器