点击菜单的水平移动

时间:2014-07-31 12:13:36

标签: javascript html css3 twitter-bootstrap

检查此链接Click Me,因为您可以看到我有12个菜单项,但由于空间限制,无法显示超过4个菜单。如您所见,目前只有Menu1到Menu4可见,其他Meus被隐藏。

更新:由于Jsfiddle做了一些清理,他们删除了我的小提琴,在上面我发布了回答小提琴。在我的问题中,一个jquery部分不存在。

我有两个按钮:

  
      
  1. 向左移动-1(稍后将被称为“ML”)
  2.   
  3. 向右移动+1(稍后将被称为“MR”)
  4.   

我正在努力实现这一目标:

  1. 点击MR会使菜单沿+1
  2. 移动
  3. 点击ML会使菜单沿-1
  4. 移动

    HTML

    <div id="outer">
    <input type="button" value="move left by -1" class="left" />
    <input type="button" value="Move Right by +1" class="left" />
    <ul id="menulist">
        <li>Menu 1</li>
        <li>Menu 2</li>
        <li>Menu 3</li>
        <li>Menu 4</li>
        <li>Menu 5</li>
        <li>Menu 6</li>
        <li>Menu 7</li>
        <li>Menu 8</li>
        <li>Menu 9</li>
        <li>Menu 10</li>
        <li>Menu 11</li>
        <li>Menu 12</li>
    </ul>
    

    CSS

    #outer {
        width:448px;
        overflow:hidden;
    }
    .left {
        float:left;
    }
    ul, li {
        list-style:none;
        margin:0;
        padding:0;
        overflow:hidden;
    }
    ul {
        font-size:0;    
        float:left;
        width:1400px;
    }
    li {
        display:inline-block;
        padding:5px;
        background:lightgrey;
        border:darkgrey;
        width:100px;
        overflow:hidden;
        text-align:center;
        font-size:14px;
        border:1px solid black;
    }
    

    对此有任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

double

li {
        border:darkgrey;
        border:1px solid black;
    }

HTML

<input type="button" value="move left by -1" class="left" />
<input type="button" value="Move Right by +1" class="right" />

jquery的

$('.left').click(function() {
    if($('#menulist').css('margin-left')=='-896px'){
         $('#menulist').css('margin-left','-896px!important');
    }
    else{
        $('#menulist').animate({
        'marginLeft' : "-=112px" //moves left
        });
    }
});
$('.right').click(function() {
    if($('#menulist').css('margin-left')=='0px'){
         $('#menulist').css('margin-left','0px!important');
    }
    else{
        $('#menulist').animate({
        'marginLeft' : "+=112px" //moves right
        });
    }
});

答案 1 :(得分:0)

Jsfiddle

正如上面的评论所述,如果这在IE中不起作用,请参阅this stack overflow question是否会对您有所帮助

HTML

<div id="outer">
    <input type="button" value="move left by -1" class="left" />
    <input type="button" value="Move Right by +1" class="right" />
    <ul id="menulist">
        <li>Menu 1</li>
        <li>Menu 2</li>
        <li>Menu 3</li>
        <li>Menu 4</li>
        <li>Menu 5</li>
        <li>Menu 6</li>
        <li>Menu 7</li>
        <li>Menu 8</li>
        <li>Menu 9</li>
        <li>Menu 10</li>
        <li>Menu 11</li>
        <li>Menu 12</li>
    </ul>

CSS

#outer {
    width:448px;
    overflow:hidden;
}
.left {
    float:left;
}
ul, li {
    list-style:none;
    margin:0;
    padding:0;
    overflow:hidden;
}
ul {
    font-size:0;
    float:left;
    width:1400px;
}
li {
    display:inline-block;
    padding:5px;
    background:lightgrey;
    border:darkgrey;
    width:100px;
    overflow:hidden;
    text-align:center;
    font-size:14px;
    border:1px solid black;
}

JS

$('.left').click(function () {
    if (parseInt($('#menulist').css('margin-left'), 10) >= -784) {
        $('#menulist').animate({
            'marginLeft': "-=112px" //moves left
        });
    }
});
$('.right').click(function () {
    if (parseInt($('#menulist').css('margin-left'), 10) >= 0) {
        $('#menulist').css('margin-left', '0px!important');
    } else {
        $('#menulist').animate({
            'marginLeft': "+=112px" //moves right
        });
    }
});