`

有关jCarouselLite 效果的改进版(个人)---jquery

阅读更多

官方站点:http://gmarwaha.com/jquery/jcarousellite/

 

结构:

 

<div class="carousel">
     <ul>
         <li><img src="image/1.jpg" alt="1"></li>
         <li><img src="image/2.jpg" alt="2"></li>
         <li><img src="image/3.jpg" alt="3"></li>
      </ul>
</div>

 样式:

   主要控制 li 的宽与高。

 

js在html里的调用:

 

$(".carousel").jCarouselLite({
      btnNext: ".next",
      btnPrev: ".prev"
});

 js地址:

    http://www.estorm.cn/blog/demo/09/1109/jcarousellite_1.0.1.js

 

参数说明:

   btnPrev : 上一张按钮
btnNext : 下一张按钮
btnGo : 标签控制,也就是用’1,2,3,4…’来控制
mouseWheel : 是否支持鼠标滑轮滚动,属性值:false / true;默认为false 打开此项需要jQuery UI插件支持
auto : 设置自动播放的速度,默认自动播放是关闭的,格式 auto: 800 (为播放速度)
speed : 动画效果速度
easing : 动画效果优化,姑且这么里面 需要外部插件支持
vertical : 动画方向,如果设置为true,则表示垂直滚动,默认为false
circular : 是否重复播放,如果设置为false,则到最后一个下一张按钮就点不动了,到第一张上一张按钮就点不动
visible : 设置默认显示几个li,默认是3个
start : 效果从第几个开始,默认为0
scroll : 一次滑动几个li,默认是2
beforeStart : 这个是接口,每次滑动效果执行之前执行的自定义函数
afterEnd : 这个是接口,每次滑动效果执行之后执行的自定义函数

 

主要强调的是我改一部分:

 

(function($) {                                          // Compliant with jquery.noConflict()
$.fn.jCarouselLite = function(o) {
    o = $.extend({
        btnPrev: null,
        btnNext: null,
        btnGo: null,
        mouseWheel: false,
        auto: null,

        speed: 200,
        easing: null,

        vertical: false,
        circular: true,
        visible: 3,
        start: 0,
        scroll: 1,

        beforeStart: null,
        afterEnd: null
    }, o || {});

    return this.each(function() {                           // Returns the element collection. Chainable.

        var running = false, animCss=o.vertical?"top":"left", sizeCss=o.vertical?"height":"width";
        var div = $(this), ul = $("ul", div), tLi = $("li", ul), tl = tLi.size(), v = o.visible;

        if(o.circular) {
            ul.prepend(tLi.slice(tl-v-1+1).clone())
              .append(tLi.slice(0,v).clone());
            o.start += v;
        }

        var li = $("li", ul), itemLength = li.size(), curr = o.start;
        div.css("visibility", "visible");

        li.css({overflow: "hidden", float: o.vertical ? "none" : "left"});
        ul.css({margin: "0", padding: "0", position: "relative", "list-style-type": "none", 
                   "z-index": "1"});
        div.css({overflow: "hidden", position: "relative", "z-index": "2", left: "0px"});

        var liSize = o.vertical ? height(li) : width(li);  
        // Full li size(incl margin)-Used for animation
        var ulSize = liSize * itemLength;                  
       // size of full ul(total length, not just for the visible items)
        var divSize = liSize * v;                          
       // size of entire div(total length for just the visible items)

        li.css({width: li.width(), height: li.height()});
        ul.css(sizeCss, ulSize+"px").css(animCss, -(curr*liSize));
      //图片从第一个开始显示。(系统默认显示的3个,但是这3个,它会隐藏掉,
        所以我把-(curr*liSize)改为0就可以了。) 
      //修改后的: ul.css(sizeCss, ulSize+"px").css(animCss, 0); 



        div.css(sizeCss, divSize+"px");                     
       // Width of the DIV. length of visible images

        if(o.btnPrev)
            $(o.btnPrev).click(function() {
                return go(curr-o.scroll);
            });

        if(o.btnNext)
            $(o.btnNext).click(function() {
                return go(curr+o.scroll);
            });

        if(o.btnGo)
            $.each(o.btnGo, function(i, val) {
                $(val).click(function() {
                    return go(o.circular ? o.visible+i : i);
                });
            });

        if(o.mouseWheel && div.mousewheel)
            div.mousewheel(function(e, d) {
                return d>0 ? go(curr-o.scroll) : go(curr+o.scroll);
            });

        if(o.auto)
            setInterval(function() {
                go(curr+o.scroll);
            }, o.auto+o.speed);

        function vis() {
            return li.slice(curr).slice(0,v);
        };

        function go(to) {
            if(!running) {

                if(o.beforeStart)
                    o.beforeStart.call(this, vis());

                if(o.circular) {            // If circular we are in first or last, then goto the other end
                    if(to<=o.start-v-1) {           // If first, then goto last
                        ul.css(animCss, -((itemLength-(v*2))*liSize)+"px");
                        // If "scroll" > 1, then the "to" might not be equal to the condition; 
                           it can be lesser depending on the number of elements.
                        curr = to==o.start-v-1 ? itemLength-(v*2)-1 : itemLength-(v*2)-o.scroll;
                    } else if(to>=itemLength-v+1) { // If last, then goto first
                        ul.css(animCss, -( (v) * liSize ) + "px" );
                        // If "scroll" > 1, then the "to" might not be equal to the condition;
                           it can be greater depending on the number of elements.
                        curr = to==itemLength-v+1 ? v+1 : v+o.scroll;
                    } else curr = to;
                } else {                    // If non-circular and to points to first or last, we just return.
                    if(to<0 || to>itemLength-v) return;
                    else curr = to;
                }                           // If neither overrides it, the curr will still be "to" and we can proceed.

                running = true;

                ul.animate(
                    animCss == "left" ? { left: -(curr*liSize) } : { top: -(curr*liSize) } , o.speed, o.easing,
                    function() {
                        if(o.afterEnd)
                            o.afterEnd.call(this, vis());
                        running = false;
                    }
                );
                // Disable buttons when the carousel reaches the last/first, and enable when not
                if(!o.circular) {
                    $(o.btnPrev + "," + o.btnNext).removeClass("disabled");
                    $( (curr-o.scroll<0 && o.btnPrev)
                        ||
                       (curr+o.scroll > itemLength-v && o.btnNext)
                        ||
                       []
                     ).addClass("disabled");
                }

            }
            return false;
        };
    });
};

function css(el, prop) {
    return parseInt($.css(el[0], prop)) || 0;
};
function width(el) {
    return  el[0].offsetWidth + css(el, 'marginLeft') + css(el, 'marginRight');
};
function height(el) {
    return el[0].offsetHeight + css(el, 'marginTop') + css(el, 'marginBottom');
};

})(jQuery);
 

问题:在修改之后,如果你定了显示的图片个数后,在没有满这个数时,你翻页的话,他翻了页之后就不能返回来了。

分享到:
评论

相关推荐

    jQuery-jcarousellite水平、垂直滚动图片效果演示

    jQuery-jcarousellite是一款基于jQuery库的轻量级图片轮播插件,它提供了丰富的水平和垂直滚动效果,适用于创建动态、吸引人的网页图像展示。本教程将深入讲解该插件的使用方法、核心功能以及如何自定义滚动效果。 ...

    jquery 常用工具集合 jcarousellite_1.0.1.js jquery.lazyload.js

    个人把常用的一些jquery插件做了一个demo,里面有jquery.dropkick-1.0.0.js、slider.js、fullcalendar-1.5.2、jquery.grumble.js、jcarousellite_1.0.1.js(已修改)、jquery.jqzoom.js、jquery.thickbox.js、jquery...

    jQuery jcarousellite可控制左右切换的幻灯片.rar

    jcarousellite是一款来自国外的jQuery插件,我们利用它可以实现很多功能,本文中,我们主要使用它完成一个可以控制左右切换的焦点图切换,幻灯片效果,当然,该幻灯片是可以自动切换的,唯一不足的之处是没有添加...

    E_jquery图片滚动切换插件 jCarousel Lite

    `jCarousel Lite`是基于jQuery的一款轻量级的图片轮播插件,它能够帮助开发者轻松实现各种灵活的图片滚动切换效果,为网站增添动态美感。 ### 1. jCarousel Lite概述 `jCarousel Lite`是一款高效、简洁的jQuery...

    jcarousellite幻灯片滚动鼠标悬停效果(原)

    jcarousellite是一款经典的jQuery插件,它提供了丰富的幻灯片滚动效果,特别是鼠标悬停功能,使得用户在浏览时能够更加方便地控制内容的展示。本篇文章将深入探讨jcarousellite的核心功能和实现原理,以及如何利用它...

    图片滚动插件:jcarousellite

    jcarousellite是一款小巧且功能强大的jQuery插件,它允许开发者轻松地创建出动态的、响应式的图片轮播效果。这个插件适用于那些希望在网站上展示多张图片而有限制空间的情况,通过自动或手动滚动,用户可以浏览到更...

    jcarousellite 基于jquery的可控切换的幻灯片 v1.0.zip

    总结,jcarousellite是一个强大而灵活的jQuery幻灯片插件,适用于各种类型的网页项目,无论是商业网站、博客还是个人作品集,都能通过它轻松实现引人注目的幻灯片展示。通过深入理解其原理和配置选项,开发者可以...

    jcarousellite的问题说明

    `jcarousellite`是一款基于jQuery的小巧且高效的轮播插件,它提供了轻量级的解决方案,用于实现网页上的图片或内容的滑动展示效果。在实际应用中,可能会遇到各种问题,下面将对`jcarousellite`的常见问题及其解决...

    jcarousellite.js 基于Jquery的图片无缝滚动插件

    `jcarousellite.js`是一款轻量级、基于jQuery的图片无缝滚动插件,它可以帮助开发者轻松地在网页上实现图片轮播效果。这款插件的主要特点在于其简单易用性以及强大的定制能力,使得开发者可以根据自己的需求调整图片...

    大图片浏览jquery代码(例用jcarousellite不算太完美)

    标题中的“大图片浏览jquery代码”指的是...总之,利用jQuery和相关插件进行大图片浏览是一种常见的网页设计技术,涉及到图片加载优化、用户交互设计等多个方面。通过学习和实践,我们可以提升网页的性能和用户体验。

    JQuery插件jcarousellite的参数中文说明

    JQuery插件jcarousellite是一款用于创建动态轮播效果的工具,它允许开发者通过配置一系列参数来定制轮播的行为。下面将详细解释这些参数的含义: 1. **btnPrev** (string): 这个参数定义了“上一个”按钮的CSS类名...

    jquery插件jCarouselLite 图片滚动+停顿代码

    摘要:脚本资源,jQuery,图片滚动 一款由jQuery插件实现的效果,主要是关于jquery插件jCarouselLite的问题,关于left:-5000px这行CSS,官方这段不知道有何用处,如果放进去就会显示不了图片了,js动态产生的值为何没有...

    jcarousellite.js

    图片轮播插件jcarousellite.js

    jquery特效

    jQuery特效是指通过使用jQuery这个JavaScript库,开发者能够以较少的代码实现网页中的动态效果和用户交互效果。jQuery作为一个快速、小巧、功能强大的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画和...

    jquery 很酷的滚动效果。

    jQuery 的 jCarouselLite 插件就是实现这种效果的一个工具。jCarouselLite 是一个轻量级的 jQuery 插件,专为实现简单、高效的轮播和滚动效果而设计。 下面我们将深入探讨 jQuery 和 jCarouselLite 在实现无缝滚动...

    jquery 图片轮换

    jcarousellite是专门为jQuery设计的一个轻量级的图片轮播插件,它提供了一套完整的解决方案来实现图片的自动滚动、手动导航和多种过渡效果。这个插件的特点包括: 1. **易于使用**:只需引入必要的CSS和JavaScript...

    滚动条插件

    JCarouselLite是由GavickPro开发的一款小型但功能强大的jQuery插件,专门用于创建各种类型的滚动效果,如图片轮播、文本滚动等。它无需复杂的配置,只需少量代码即可实现流畅的滚动效果,大大简化了开发者的工作流程...

Global site tag (gtag.js) - Google Analytics