【问题标题】:jQuery animating width of variablejQuery动画变量的宽度
【发布时间】:2013-04-16 00:55:49
【问题描述】:

我无法在我设置为变量的 div 宽度上获得流畅的动画。它的动画应该类似于进度条。我在JSfiddle 上有一个演示。如何获得流畅的动画?谢谢!

HTML:

<div id="pb"><div></div></div>

<a href="#" class="test" data-value="25%">25</a>
<a href="#" class="test" data-value="50%">50</a>
<a href="#" class="test" data-value="75%">75</a>    
<a href="#" class="test" data-value="100%">100</a>

jQuery:

$(function () {
    $( "#pb div" ).width("50%");

    $('.test').click( function () {
         var value = parseInt($(this).attr('data-value'));
        var test = $( "#pb div" ).css({width: (value) + '%'});

        $('#pb div').animate({
            width: test,
        }, 1000);
    });
});

【问题讨论】:

    标签: javascript jquery jquery-animate


    【解决方案1】:

    jsFiddle Demo

    你已经在那里了 :)

    只需在动画中使用您的值,而不是像这样通过 css 属性直接设置宽度:

    $('#pb div').animate({
            width: value+"%",
        }, 1000);
    

    【讨论】:

    • 感谢您的帮助! :)
    【解决方案2】:

    您的行 var test = ... 已经在更改 css 宽度。 而是使用下面的动画函数:

    $(function () {
        $( "#pb div" ).width("50%");
    
        $('.test').click( function () {
            var value = parseInt($(this).attr('data-value'));
            test = $( "#pb div" ).animate({width: (value) + '%'});
        });
    });
    

    【讨论】:

      【解决方案3】:

      您使用.css.animate 设置相同的宽度,因此它不会有任何帧动画:

      $(function () {
          $("#pb div").width("50%");
      
          $('.test').click(function() {
              $('#pb div').stop().animate({
                  width: $(this).data('value')
              }, 1000);
          });
      });
      

      演示:http://jsfiddle.net/srQVv/1/

      【讨论】:

      • 感谢您的帮助;它完美地工作。请问与@TravisJ 的建议相比,添加.stop().data() 有什么好处?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多