您好,欢迎访问一九零五行业门户网

jquery实现页面百叶窗走马灯式翻滚显示效果的方法_jquery

本文实例讲述了jquery实现页面百叶窗走马灯式翻滚显示效果的方法。分享给大家供大家参考。具体如下:
1. 这里的代码需要jquery1.3以上的支持,如下所示:
复制代码 代码如下:
jquery.fn.extend((
    function($){
        var l = 4,//卷动行数
            t=5000,//卷动完一次后,隔多长时间下次开始卷动
            rt=500,//每个n卷动过去的耗时
            n=li,//默认的卷动对象内包含的要卷动的html标记
            o=ul,//如果卷动时,启用的包裹卷动元素的html标记
            e,//调用对象
            en,//调用对象内所有的要卷动的对象集合
            h;//卷动行高度
        var vlimit=80;//比视觉极限0.1s还小点
        var maxrnum=math.ceil(rt/vlimit);//最大卷动次数
        var maxrh=0;//每次卷动高度
        var fnrollfirst=function(arg){//将arg向上卷1个n,完成之后将第1个n移动到最后一个位置
            var rcount=0;//卷动次数纪录
            var rval=setinterval(function(){//每隔vlimit循环一次,共循环maxrnum-1次
                        rcount++;
                        arg.scrolltop(arg.scrolltop()+maxrh);
                        if(rcount>=(maxrnum-1)){//少卷1次
                            clearinterval(rval);
                            arg.scrolltop(arg.scrolltop()+h-maxrh*(maxrnum-1));//最后1次修正卷动值
                            //移动第一个元素到最后
                            var nown=arg.children(n);
                            nown.eq(nown.length-1).after(nown.eq(0));
                            //第一个位置空出后需要通过倒卷修正回来
                            arg.scrolltop(-h);
                        };
                    },vlimit);
        };
        var fnrollarr=function(arg){//对数组中的对象逐一启动卷动
            var out=setinterval(function(){
                fnrollfirst(arg.shift());
                if(!arg.length){
                    clearinterval(out);
                };
            },rt);     
        };
        var fnroll=function(){//获得需要逐个卷动的对象集合
            var arr=new array();
            e.children(o).each(function(){
                var rn=$(this).children(n);
                if(rn.length>1){
                    arr.push($(this));
                };
            });
            setinterval(function(){
                fnrollarr(arr.slice(0));
            },t);
        };
        var fnlay=function(){//布局页面
            h=en.height();
            var nu=math.ceil(en.length/l);
            var u=$(+o+>);
            u.css({overflow:hidden,height:h+px,margin-bottom:15px});
            for(var i=0;i                en.slice(nu*i,nu*(i+1)).wrapall(u);
            };         
        };
        var fnmain=function(){//卷动主方法
            if(maxrnum>1){
                fnlay();
                maxrh=math.ceil(h/maxrnum);
                fnroll();
            };
        };
        var fnstart= function(arg){//初始化显示方式
            e=arg;
            en = e.children(n);
            en.show();
            if(en.length>l){
                fnmain();
            }else{
                return false;
            };
        };
        return {
            setline : function(num){//设置要分成多少行来卷动
                (!isnan(num) && num>0)?l=num:;
                return this;
            },
            settime : function(num){//卷动间隔时间:毫秒
                (!isnan(num) && num>0)?t=num:;
                return this;
            },
            startroll : function(){//启动卷动
                fnstart(this);
            }
        };
    }
)(jquery));
2. 页面可以是这样子
复制代码 代码如下:
李飞正在申请成为经验达人
李飞已向职场专题《我是个亚太人呀亚太人》投稿
董川民已成功购买职场专题《我是个亚太人呀亚太人》
李飞对《我是个亚太人呀亚太人》的解决方案又卖出一次
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
李飞向职场专题《我是个亚太人呀亚太人》的投稿已通过审核,获得1元奖励。
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥评论经验:
     人生感悟及处事技巧人生感悟及处事
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
李飞已正式成为经验达人
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥评论经验:
     人生感悟及处事技巧人生感悟及处事
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
李飞已邀请董川民成为经验达人
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥评论经验:
     人生感悟及处事技巧人生感悟及处事
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
三内里奥回答了大飞的提问
     人生感悟及处事技巧人生感悟?
希望本文所述对大家的jquery程序设计有所帮助。
其它类似信息

推荐信息