在jQuery中上下动画和图像

Posted

技术标签:

【中文标题】在jQuery中上下动画和图像【英文标题】:Animate and image up and down in jQuery 【发布时间】:2012-07-17 05:44:48 【问题描述】:

我正在尝试使用 jQuery 上下动画和图像。

它的行为应该是这样的:

当页面加载时,它会显示 50% 的图像。如果有人点击图像,它会在页面上设置 div 动画。如果用户再次点击,它会移回页面下方。

html

 <div id="slidebottom" class="slide">
     <div class="inner"><img src="images/sze.jpg"  class="try" /></div>
 </div>

jQuery

$(document).ready(function() 
    $('.try').click(function() 
        $(".inner").animate(
            top: '-=100px'
        , 2000);
    );
);

点击两次后如何反转动画?在我每次点击的那一刻,容器都会向上移动。

【问题讨论】:

【参考方案1】:

您可以尝试使用.toggle() 方法,该方法采用两个函数,并在单击时交替执行每个函数:

$(document).ready(function()
  $('.try').toggle(function() 
    $(".inner").animate(top: '-=100px', 2000);
  , function() 
    $(".inner").animate(top: '+=100px', 2000);
  );
);

不过,我个人会使用类和 CSS3 过渡。

【讨论】:

有可能无法在 Chrome 中运行动画吗? FF 可以这样做,但是在 Chrome 中,首先单击图像后,图像会跳下来,然后动画起来,如果我再次单击而不是动画孔站点..crazy 效果 我在 Chrome、IE9、Safari 中尝试过...只有 FF 将其作为 ascpected 处理。【参考方案2】:

试试this example。另请注意,为了使用 top css 属性,您应该使用 position: relatve;position: absolute .inner div。

 var clicked = false
 $('.try').click(function () 
     if (clicked == true) 
         $(".inner").animate(
             top: '0px'
         , 2000);
         clicked = false;
      else 
         $(".inner").animate(
             top: '-100px'
         , 2000);
         clicked = true;
     
 );​

【讨论】:

90% 的例子不适合我,但这个适合……【参考方案3】:

只需在第一行下面放另一行代码,它就会按顺序为它们设置动画

$(document).ready(function() 
    $('.try').click(function() 
        $(".inner").animate(
            top: '-=100px'
        , 2000);
        $(".inner").animate(
            top: '+=100px'
        , 2000);
    );
);

【讨论】:

以上是关于在jQuery中上下动画和图像的主要内容,如果未能解决你的问题,请参考以下文章

jquery 动画,移动除了上下左右,别的方向怎么移动呀

jQuery:如何平滑动画图像大小调整

jquery为表格行添加上下移动画效果

jQuery动画摇摇欲坠

jQuery同时动画和淡化背景图像

JQuery 动画在 Chrome 中触发较晚