简体   繁体   English

如何修改此jQuery插件滑块的滚动和方向?

[英]How to modify this jQuery plugin slider for scrolling and orientation?

I found a jQuery slider plugin that does almost what I need. 我找到了一个几乎可以满足我需要的jQuery滑块插件。 I need to change the tabs so it is on the right side (by adding an option). 我需要更改选项卡,使其位于右侧(通过添加选项)。 Also, I would like to add scrolling to the tabs in case there is more than 3 tabs (also by an option). 另外,如果有3个以上的标签(也可以选择),我想向标签添加滚动。 I am trying to make it look like this which is an artist mock up: 我试图使它看起来像这样,这是艺术家的模型:

http://i.stack.imgur.com/nR8RY.png http://i.stack.imgur.com/nR8RY.png

This is the script I am trying to modify with the code below it: http://jqueryglobe.com/labs/feature_list/ 这是我尝试使用其下面的代码修改的脚本: http : //jqueryglobe.com/labs/feature_list/

/*
 * FeatureList - simple and easy creation of an interactive "Featured Items" widget
 * Examples and documentation at: http://jqueryglobe.com/article/feature_list/
 * Version: 1.0.0 (01/09/2009)
 * Copyright (c) 2009 jQueryGlobe
 * Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License
 * Requires: jQuery v1.3+
*/
;(function($) {
    $.fn.featureList = function(options) {
        var tabs    = $(this);
        var output  = $(options.output);

        new jQuery.featureList(tabs, output, options);

        return this;    
    };

    $.featureList = function(tabs, output, options) {
        function slide(nr) {
            if (typeof nr == "undefined") {
                nr = visible_item + 1;
                nr = nr >= total_items ? 0 : nr;
            }

            tabs.removeClass('current').filter(":eq(" + nr + ")").addClass('current');

            output.stop(true, true).filter(":visible").fadeOut();
            output.filter(":eq(" + nr + ")").fadeIn(function() {
                visible_item = nr;  
            });
        }

        var options         = options || {}; 
        var total_items     = tabs.length;
        var visible_item    = options.start_item || 0;

        options.pause_on_hover      = options.pause_on_hover        || true;
        options.transition_interval = options.transition_interval   || 5000;

        output.hide().eq( visible_item ).show();
        tabs.eq( visible_item ).addClass('current');

        tabs.click(function() {
            if ($(this).hasClass('current')) {
                return false;   
            }

            slide( tabs.index( this) );
        });

        if (options.transition_interval > 0) {
            var timer = setInterval(function () {
                slide();
            }, options.transition_interval);

            if (options.pause_on_hover) {
                tabs.mouseenter(function() {
                    clearInterval( timer );

                }).mouseleave(function() {
                    clearInterval( timer );
                    timer = setInterval(function () {
                        slide();
                    }, options.transition_interval);
                });
            }
        }
    };
})(jQuery);

This is the CSS: 这是CSS:

body {
    background: #EEE;   
    font-family: "Trebuchet MS",Verdana,Arial,sans-serif;
    font-size: 14px;
    line-height: 1.6;
}

#content {
    width: 750px;
    margin: 50px auto;
    padding: 20px;
    background: #FFF;   
    border: 1px solid #CCC;
}

h1 {
    margin: 0;
}

hr {
    border: none;
    height: 1px; line-height: 1px;
    background: #CCC;   
    margin-bottom: 20px;
    padding: 0;
}

p {
    margin: 0;  
    padding: 7px 0;
}

.clear {
    clear: both;
    line-height: 1px;
    font-size: 1px;
}

a { 
    outline-color: #888;    
}

Can anyone help with this? 有人能帮忙吗?

Answer: jsFiddle: features box that slides and scrolls 答案: jsFiddle:可滑动和滚动的功能框

Features: 特征:

  • Slides over time 随着时间推移滑动
  • Click next and previous 单击下一个和上一个
  • Support for lots of slides 支持大量幻灯片
  • Smooth scrolling 平滑滚动
  • Move to item on click 单击时移至项目
  • Stop movement on hover 悬停时停止运动
  • Easily extended because it uses the cycle plug-in. 易于扩展,因为它使用了循环插件。

Time spent on project: 4hrs 项目时间: 4小时

Ok, no fancy scrollbars or anything, but it will iterate through each one bringing it to the top index. 好的,没有花哨的滚动条或其他任何东西,但是它将迭代每个滚动条,使其升至最高索引。 I spent ages getting this working properly. 我花了很长时间使它正常工作。 You can test it by adding additional items to the Lists. 您可以通过将其他项目添加到列表中进行测试。

/*
 * FeatureList - simple and easy creation of an interactive "Featured Items" widget
 * Examples and documentation at: http://jqueryglobe.com/article/feature_list/
 * Version: 1.0.0 (01/09/2009)
 * Copyright (c) 2009 jQueryGlobe
 * Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License
 * Requires: jQuery v1.3+
*/
;(function($) {
    $.fn.featureList = function(options) {
        var tabs    = $(this);
        var output  = $(options.output);

        new jQuery.featureList(tabs, output, options);

        return this;    
    };

    $.featureList = function(tabs, output, options) 
    {
        function slide(nr) {
            if (typeof nr == "undefined") {
                nr = visible_item + 1;
                nr = nr >= total_items ? 0 : nr;
            }

            tabs.removeClass('current').filter(":eq(" + nr + ")").addClass('current');

            output.stop(true, true).filter(":visible").fadeOut();
            output.filter(":eq(" + nr + ")").fadeIn(function() {
                visible_item = nr;  
            });

            $(tabs[(nr - 1 + total_items) % total_items]).parent().slideUp(500,function(){
                var order = "";
                for(var i = total_items; i > 0; i--)
                {
                    var nextInd = ((nr - 1) + i) % total_items;
                    var tab = $(tabs[nextInd]);
                    if(i == total_items)
                        tab.parent().slideDown(500);
                    tab.parent().prependTo(tab.parent().parent());
                    order += nextInd + ", ";
                }
            });
        }

        var options         = options || {}; 
        var total_items     = tabs.length;
        var visible_item    = options.start_item || 0;

        options.pause_on_hover      = options.pause_on_hover        || true;
        options.transition_interval = options.transition_interval   || 2000;

        output.hide().eq( visible_item ).show();
        tabs.eq( visible_item ).addClass('current');

        tabs.click(function() {
            if ($(this).hasClass('current')) {
                return false;   
            }
            slide( tabs.index( this) );
        });

        if (options.transition_interval > 0) {
            var timer = setInterval(function () {
                slide();
            }, options.transition_interval);

            if (options.pause_on_hover) {
                tabs.mouseenter(function() {
                    clearInterval( timer );

                }).mouseleave(function() {
                    clearInterval( timer );
                    timer = setInterval(function () {
                        slide();
                    }, options.transition_interval);
                });
            }
        }
    };
})(jQuery);

要增加盒子的高度,只需更改div#feature_list的高度,并添加其他项,只需在feature_listul中都添加一个li

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM