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+"></"+o+">");
            u.css({"overflow":"hidden","height":h+"px","margin-bottom":"15px"});
            for(var i=0;i<l;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. 页面可以是这样子

复制代码 代码如下:

<div id="re" class="dynamic">
 <li>
     <a href="#" class="name">李飞</a>正在申请成为经验达人
 </li>
 <li>
     <a href="#" class="name">李飞</a>已向职场专题《<a href="">我是个亚太人呀亚太人</a>》投稿
 </li>
 <li>
     <a href="#" class="name">董川民</a>已成功购买职场专题《<a href="#">我是个亚太人呀亚太人</a>》
 </li>
 <li>
     <a href="#" class="name">李飞</a>对《<a href="">我是个亚太人呀亚太人</a>》的解决方案又卖出一次
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
   
 <li>
     <a href="#" class="name">李飞</a>向职场专题《<a href="#">我是个亚太人呀亚太人</a>》的投稿已通过审核,获得1元奖励。
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>评论经验:
     <div class="text"><a href="">人生感悟及处事技巧人生感悟及处事</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
  
 <li>
     <a href="#" class="name">李飞</a>已正式成为经验达人
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>评论经验:
     <div class="text"><a href="">人生感悟及处事技巧人生感悟及处事</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
    
 <li>
     <a href="#" class="name">李飞</a>已邀请<a href="#" class="name">董川民</a>成为经验达人
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>评论经验:
     <div class="text"><a href="">人生感悟及处事技巧人生感悟及处事</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
 <li>
     <a href="#" class="name">三内里奥</a>回答了<a href="#" class="name">大飞</a>的提问
     <div class="text"><a href="">人生感悟及处事技巧人生感悟?</a></div>
 </li>
</div>
<script type="text/javascript">
//复杂点的调用写法
//$("#re").setLine(5).setTime(3000).startRoll();
//简单的调用
$("#re").startRoll();
</script>

希望本文所述对大家的jQuery程序设计有所帮助。

时间: 2024-10-31 00:47:04

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

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

 这篇文章主要介绍了jquery实现页面百叶窗走马灯式翻滚显示效果的方法,实例分析了jQuery操作百叶窗翻滚效果的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jquery实现页面百叶窗走马灯式翻滚显示效果的方法.分享给大家供大家参考.具体如下: 1. 这里的代码需要jquery1.3以上的支持,如下所示: 代码如下: jQuery.fn.extend(( function($){ var l = 4,//卷动行数 t=5000,//卷动完一次后,隔多长时间下次开

jQuery获取页面元素绝对与相对位置的方法_jquery

本文实例讲述了jQuery获取页面元素绝对与相对位置的方法.分享给大家供大家参考.具体如下: 获取页面某一元素的绝对X,Y坐标,可以用offset()方法: var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; 获取相对(父元素)位置: var X = $('#DivID').position().top; var Y = $('#DivID').position().left; var pleft = $("s

jquery判断页面网址是否有效的两种方法_jquery

方法一:(jQuery方法: 适用所有浏览器) HTML页面: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="js/jquery-1.7.1.min.js">&l

Jquery刷新页面背景图片随机变换的实现方法_jquery

使用方法:下载jquery-1.9.1.js,然后设置CSS,图片文件放在images/new_feed/目录下,图片命名格式为bg_x.jpg,修改随机数产生范围 一.CSS代码 复制代码 代码如下: <style> body{                padding:0;                background-attachment: fixed;                background-clip: border-box;                bac

JQuery为页面Dom元素绑定事件及解除绑定方法_jquery

1.绑定事件 复制代码 代码如下: $('#id').bind("click",function(){ ... }) 可一次性绑定多个事件 复制代码 代码如下: $('#id').bind("click mouseover mouseout",function(){ ... }) 2.解除绑定 复制代码 代码如下: $('#id').unbind("click") 3.绑定一次 复制代码 代码如下: $('#id').one("clic

jQuery获取页面元素绝对与相对位置的方法

 本文实例讲述了jQuery获取页面元素绝对与相对位置的方法.分享给大家供大家参考.具体如下: 获取页面某一元素的绝对X,Y坐标,可以用offset()方法: 1 2 var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; 获取相对(父元素)位置: 1 2 3 4 var X = $('#DivID').position().top; var Y = $('#DivID').position().left; var

用jQuery模拟页面加载进度条的实现代码_jquery

因为我们无法通过任何方法获取整个页面的大小和当前加载了多少,所以想制作一个加载进度条的唯一办法就是模拟.那要怎么模拟呢? 我们知道,页面是从上往下执行的,也就是说我们可以大致估算出在页面的某个位置加载了多少,而后用jq模拟出一个进度条来显示. 首先我们先画一个进度条的样子,也就是上图图中的样子,这个不用过多说明,自己看代码 CSS 复制代码 代码如下: *{margin:0;padding:0;font-size:12px} .loading{position:relative;top:0;le

jQuery实现简单的列表式导航菜单效果代码_jquery

本文实例讲述了jQuery实现简单的列表式导航菜单效果代码.分享给大家供大家参考.具体如下: 这里使用jQuery实现简单的列表式导航菜单,是根据网上的一个教程,边看边写的,经过了修正,拷贝代码即可使用.主要实现包括三个部分,一是CSS.二是引入jQuery.三是编写JS代码进行jQuery控件. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-simple-list-style-nav-menu-codes/ 具体代码如下: <h

JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)_jquery

js与jquery获得页面大小.滚动条位置.元素位置 复制代码 代码如下: //页面位置及窗口大小 function GetPageSize() {var scrW, scrH; if(window.innerHeight && window.scrollMaxY) {    // Mozilla    scrW = window.innerWidth + window.scrollMaxX;    scrH = window.innerHeight + window.scrollMaxY