Javascript 在表格中滚动选项卡

Javascript 在表格中滚动选项卡,javascript,jquery,Javascript,Jquery,我有一个水平标签菜单。这些选项卡都是li元素。我总是一次展示其中的5个。在左边和右边,我有按钮可以将这些标签滚动到任意一边。我只是不知道如何才能做到这一点。我可以把接下来的5个标签放在一个不同的div中吗?那不是最好的解决办法,是吗?我可以用JavaScript或jQuery来实现这一点吗 谢谢。虽然我不确定该选项卡的外观如何,但我假设有5个选项卡,您将显示不同的页面内容集 我建议使用Javascript实现一个简单的解决方案(设计)。看看它是否有效 有一个变量来存储当前视图索引。e、 g._当

我有一个水平标签菜单。这些选项卡都是li元素。我总是一次展示其中的5个。在左边和右边,我有按钮可以将这些标签滚动到任意一边。我只是不知道如何才能做到这一点。我可以把接下来的5个标签放在一个不同的div中吗?那不是最好的解决办法,是吗?我可以用JavaScript或jQuery来实现这一点吗


谢谢。

虽然我不确定该选项卡的外观如何,但我假设有5个选项卡,您将显示不同的页面内容集

我建议使用Javascript实现一个简单的解决方案(设计)。看看它是否有效

  • 有一个变量来存储当前视图索引。e、 g._当前视图

  • 将5个选项卡的内容放在5个视图中(当我说视图时,有很多方法可以建立它,从使用div对象到使用.net多视图控件)

  • 默认情况下,保持其可见性为关闭状态

  • 创建一个方法,该方法将接受_currentView作为参数。在此方法中,只需使当前视图可见

  • 单击左右箭头,增加或减少_currentView值,并调用激活当前视图的方法


  • 请查看这是否对您有帮助。

    您可以通过jQuery完成此操作。如果所有选项卡的宽度相同,则更容易。您可以将UL定位在具有overflow:hidden和position:relative的DIV内。然后UL可以使用animate()方法(或css()方法)在DIV内部滑动。在网上查看它们

    下面是一个例子:

    <!DOCTYPE HTML>  
    <html>
    <head>
        <style>
            * { margin: 0; padding: 0; }
            body { padding: 30px; }
            div#tabs { width: 360px; height: 30px; overflow: hidden; position: relative; }
            ul { display: block; float: left; width: 1080px; position: absolute; left: -360px; }
            li { display: block; float: left; width: 70px; height: 30px; font-size: 12px; border: 1px solid #333; }
            button { float: left; width: 100px; margin: 20px; }
        </style>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
        <script>
            $(document).ready(function()
            {
                $("button").click(function()
                {
                    var tabs_list = $("div#tabs > ul");
                    if($(this).is("#left"))
                    {
                        tabs_list.animate({ left: "-=360" }, 500);
                    }
                    else if($(this).is("#right"))
                    {
                        tabs_list.animate({ left: "+=360" }, 500);
                    }
                });
            });    
        </script>
    </head>
    
    <body>
    
    <div id="tabs">
        <ul>
            <li><a href="#">one</a></li>
            <li><a href="#">two</a></li>
            <li><a href="#">three</a></li>
            <li><a href="#">four</a></li>
            <li><a href="#">five</a></li>
            <li><a href="#">six</a></li>
            <li><a href="#">seven</a></li>
            <li><a href="#">eight</a></li>
            <li><a href="#">nine</a></li>
            <li><a href="#">ten</a></li>
            <li><a href="#">eleven</a></li>
            <li><a href="#">twelve</a></li>
            <li><a href="#">thirteen</a></li>
            <li><a href="#">fourteen</a></li>
            <li><a href="#">fifteen</a></li>
        </ul>
    </div>
    
    <button id="left">scroll left</button>
    <button id="right">scroll right</button>
    
    </body>
    </html>
    
    
    *{边距:0;填充:0;}
    正文{padding:30px;}
    div#tabs{宽度:360px;高度:30px;溢出:隐藏;位置:相对;}
    ul{显示:块;浮动:左;宽度:1080px;位置:绝对;左:-360px;}
    li{显示:块;浮动:左;宽度:70px;高度:30px;字体大小:12px;边框:1px实心#333;}
    按钮{浮动:左;宽度:100px;边距:20px;}
    $(文档).ready(函数()
    {
    $(“按钮”)。单击(函数()
    {
    var标签列表=$(“div标签>ul”);
    如果($(此).is(“#左”))
    {
    制表符列表。动画({左:“-=360”},500);
    }
    else if($(this).is(“#right”))
    {
    制表符列表。动画({左:“+=360”},500);
    }
    });
    });    
    
    向左滚动 向右滚动

    当您到达选项卡列表的开头或结尾时,这需要更多的工作才能取消激活或隐藏滚动按钮,但这应该可以让您开始了。

    我喜欢Elliot的解决方案。我还有一个,如果标签长度不同,它就可以工作。它通过在单击“右”和“左”按钮时隐藏和显示单个“li”来实现。代码还负责一次左右移动卡舌5,并处理端箱

    <!DOCTYPE HTML>
    <html>
    <head>
    <style>
        #left, #right {float: left; position: relative; margin: 0; padding: 0;}
        #tabs {float: left; position: relative; list-style: none; margin: 0; padding: 0;}
        #tabs li {float: left; display: none; border: 2px solid #000; width: 50px; text-align: center;};
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> 
    <script type="text/javascript">
    $(document).ready(function(){
        var tabs = $('#tabs li'), number_of_tabs = tabs.length;
        var tabs_visible = Math.min(5, number_of_tabs), low_tab = 0, high_tab = (tabs_visible - 1);
    
        $(tabs).filter(function(index){return (index < tabs_visible);}).show();
        $('#left, #right').each(function(){
            $(this).click(function(){
                if ($(this).is('#right')) {
                    var high_tab_new = Math.min((high_tab + tabs_visible), (number_of_tabs - 1));
                    var low_tab_new = high_tab_new - tabs_visible + 1;
                    $(tabs).filter(function(index){
                        return (index >= low_tab) && (index < low_tab_new);
                    }).hide();
                    $(tabs).filter(function(index){
                        return (index > high_tab) && (index <= high_tab_new);
                    }).show();
                    low_tab = low_tab_new;
                    high_tab = high_tab_new;
                } else {
                    var low_tab_new = Math.max((low_tab - tabs_visible), 0);
                    var high_tab_new = low_tab_new + tabs_visible - 1;
                    $(tabs).filter(function(index){
                        return (index > high_tab_new) && (index <= high_tab);
                    }).hide();
                    $(tabs).filter(function(index){
                        return (index >= low_tab_new) && (index < low_tab);
                    }).show();
                    low_tab = low_tab_new;
                    high_tab = high_tab_new;                
                }
            });
        });
    </script>
    </head>
    
    <div id="nav3">
    <button id="left">left</button>
    <ul id="tabs">
        <li><a href="#">A</a></li>
        <li><a href="#">B</a></li>
        <li><a href="#">C</a></li>
        <li><a href="#">D</a></li>
        <li><a href="#">E</a></li>
        <li><a href="#">F</a></li>
        <li><a href="#">G</a></li>
        <li><a href="#">H</a></li>
        <li><a href="#">I</a></li>
    </ul>
    <button id="right">right</button>   
    </div>
    </body>
    </html>
    
    
    #左,#右{浮点:左;位置:相对;边距:0;填充:0;}
    #制表符{浮动:左;位置:相对;列表样式:无;边距:0;填充:0;}
    #标签li{浮动:左;显示:无;边框:2px实心#000;宽度:50px;文本对齐:中心;};
    $(文档).ready(函数(){
    var tabs=$('#tabs li'),_tabs的数量=tabs.length;
    var tabs\u visible=Math.min(5,tabs的数量),low\u tab=0,high\u tab=(tabs\u visible-1);
    $(制表符).filter(函数(索引){return(索引=低位选项卡)和&(索引<低位选项卡>新建);
    }).hide();
    $(制表符).过滤器(函数(索引){
    返回(索引>高选项卡)和&(索引高选项卡新)和&(索引=低选项卡新)和&(索引<低选项卡);
    }).show();
    low_tab=low_tab_new;
    high_tab=high_tab_new;
    }
    });
    });
    左边
    
    正确的
    我认为您正在寻找一个“jQuery旋转木马”?我想我同意这里的@David。jQuery旋转木马应该能帮助您找到需要的地方。您好,顺便说一句,使用“slice()”方法可能比使用笨拙的“filter()”方法更好。