0

我正试图让它工作,但由于某种未知原因,图像没有变化。查看我在此处创建的 JSfiddle 。(图像应该在您将鼠标悬停在其上时跳跃,并在您悬停时向下浮动)。

$(document).ready(function() {
  $('#hover-image').hover(

    function() {
      // Over
      $(this).animate({
        'background-position': 'center top'
      }, 5000);
    },
    function() {
      // Out
      $(this).animate({
        'background-position': 'center center'
      }, 5000);
    }
  );
});
#hover-image {
  width: 300px;
  height: 300px;
  background: url(http://icons.iconarchive.com/icons/artbees/paradise-fruits/256/Banana-icon.png);
  background-repeat: no-repeat;
  background-position: center center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<div id="hover-image"></div>

编辑:我现在发现你不能对非数字 css 值进行动画处理。更改背景位置以使用百分比解决了这个问题。

4

2 回答 2

4

您不能为非数字 CSS 属性设置动画:

.animate()方法允许我们在任何数字CSS 属性上创建动画效果。

来源:http ://api.jquery.com/animate/

于 2013-08-23T08:41:45.660 回答
3

看看这个插件http://keith-wood.name/backgroundPos.html - 一个 jQuery 插件,允许背景图像的位置被动画化。

我更新了jsfiddle

$(document).ready(function(){
    $('#hover-image').hover(

        function(){
            // Over
            $(this).animate({backgroundPosition: '50% 100%'},500);              
        },
        function(){
            // Out
            $(this).animate({backgroundPosition: '50% 50%'},500);             
        }
    );
});
于 2013-08-23T08:49:28.013 回答