【问题标题】:jQuery slide li leftjQuery 向左滑动
【发布时间】:2011-08-25 17:42:51
【问题描述】:

我正在制作一个幻灯片查看器,显示的 ul 中有 5 个 lis。我如何使用 j 查询在 li 上向左滑动,以便不再看到左侧的 li,并显示其中一个未看到的 li?

【问题讨论】:

    标签: javascript jquery html animation css


    【解决方案1】:

    2011 年 6 月 30 日更新

    当我对jquery 很陌生时,我回答了这个问题。从那以后我学到了一些东西,在前几天晚上这个答案被投票后,我看了看这个答案。我最初对下一个元素如何快速进入并或多或少地打破障碍感到不满意。 (see here)。我觉得处理这个问题的适当方法是在第一次切换后调用回调。

    更新的 jquery

    ​​>
    $('li:gt(4)').css('display', 'none');
    
        $("button").click(function() {
            $('li:first').insertAfter('li:last').toggle('clip', 100, function() {
                //called after the first .toggle() is finished
                $('li:eq(4)').toggle('scale', 100);
            });
    });
    

    查看更新后的live example

    .toggle()

    .toggle( [duration,] [easing,] [callback] )
    durationA string or number determining how long the animation will run.
    easingA string indicating which easing function to use for the transition.
    callbackA function to call once the animation is complete.
    

    JQUERY

        $('li:gt(4)').css('display', 'none');
        $("button").click(function() {  
        $('li:first').fadeOut('fast').insertAfter('li:last')
        $('li:eq(4)').fadeIn(); });
    

    HTML

    <ul>
        <li class="slider"> Item-1 </li>
        <li class="slider"> Item-2 </li>
        <li class="slider"> Item-3 </li>
        <li class="slider"> Item-4 </li>
        <li class="slider"> Item-5 </li>
        <li class="slider"> Item-6 </li>
        <li class="slider"> Item-7 </li>
        <li class="slider"> Item-8 </li>
        <li class="slider"> Item-9 </li>
        <li class="slider"> Item-10 </li>
    </ul>
    
    
    <button> Next > </button>
    

    还有一把小提琴http://jsfiddle.net/EZpMf/

    这将不那么严格并且使用更少的代码。我也觉得它的可读性很好。

    它的作用是选择任何大于 4(从零开始)的 li 并将其隐藏。接下来,当您单击按钮时,它会缓和第一个并将其插入到最后,然后将第 4 个缓入并缓入。我想您可以自定义动画。使用切换和 jquery-ui 提供的一些动画效果。但这是一个简单的例子。

    编辑 在试图改善这一点后,我问了我自己的问题。我正在粘贴答案+小提琴

    $('li:gt(4)').css('display', 'none');
    
    $("button").click(function() {  
        $('li:first').insertAfter('li:last').toggle('clip',100);
        $('li:eq(4)').toggle('scale', 100);
    });
    

    http://jsfiddle.net/67Wu7/

    【讨论】:

      【解决方案2】:

      HTML

      <ul>
          <li>1</li>
          <li>2</li>
          <li>3</li>
          <li>4</li>
          <li>5</li>
          <li>6</li>
      </ul>
      <br/>
      <button> next </button>
      

      CSS

      li {
          float: left;   
          display: none; 
      }
      

      jQuery

      $("li").filter(function(key) {
          return key < 5;
      }).css("display", "inline");
      
      $("button").click(function() {
          var lis = $("li");
          // place the first element at the end.
          var li = lis.first().detach().appendTo("ul");
          // show first 5
          $("li").filter(function(key) {
              return key < 5;
          }).css("display", "inline");
          // hide rest
          $("li").filter(function(key) {
              return key >= 5;
          }).css("display", "none");
      
      });
      

      Live Example

      【讨论】:

      • 这不是我需要的。我同时显示了 5 个 lis。我希望所有的 lis 都向左滑动,这样 li 1 就不会显示,而 6 会显示。我试过 .animate 和 slide 但他们没有滑动它。 slideUp 有效,但我希望所有 lis 向左滑动,使第一个隐藏...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 2012-07-29
      • 2017-04-04
      • 1970-01-01
      • 2010-10-05
      • 2015-08-25
      相关资源
      最近更新 更多