【问题标题】:jQuery Colour AnimationjQuery 颜色动画
【发布时间】:2011-05-14 05:17:41
【问题描述】:

我被一个不想动画的函数困住了......

我正在使用最新的jQuery Color Plugin 来启用彩色动画。现在,在下面的代码中应该发生的是(当然,当它工作时):

(1) 用户选择一种颜色, (2) 基于该颜色的 RGB 值,我们创建该颜色的较浅色调, (3) 当悬停在一个链接上时,它的颜色被新计算的颜色替换, (4) 移开链接时,应将原色动画化。

颜色替换效果很好,但动画不像现在看起来更像是传统的 CSS 悬停效果,而不是使用 jQuery 完成的超过 800 毫秒的效果。

如果那里的忍者可以帮助我,我非常愿意让你的投掷明星闪耀一周:)。代码如下:

$('a').hover(function() {
//code when hover over
$oldColour = $(this).css('color');

    $(this).animate({'color': $(this).css('color', function(i, v){
      var rgb = getRGB($(this).css('color'));

      for(var i = 0; i < rgb.length; i++){
        rgb[i] = (rgb[i] + 60 < 255) ? rgb[i] + 60 : 255;
      }

      var newColor = 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')';
      return  newColor;

      }) //end anonymous function
    }, 800); //end animate


    }, function() {
      //code when hovering away
      $(this).animate({'color': $(this).css('color', $oldColour)}, 800);
    });

您的帮助一如既往地棒极了,非常感谢! 谢谢你(当然还有女孩们)看看:)

PS 要查看实时示例,请转到 demo page 并将鼠标悬停在任何链接上...

===== 更新:需要更多帮助 ===== Cambraca 下面的代码完美运行。除了在 IE 中它首先褪色为非常暗的颜色,然后当我关闭鼠标时返回到初始颜色,然后当我再次将鼠标悬停在它上面时,会显示正确的重新计算颜色...

关于如何为 IE 解决这个问题的任何想法?

【问题讨论】:

  • 为什么需要$(this).css('color', function...
  • 老实说,我在动画颜色部分之后直接插入该函数(i,v)时我的球 - 它不会运行,所以我想出了css颜色函数:)。显然它没有用,但我束手无策......在转向 stackoverflow 之前花了 3 个多小时试图提出解决方案。

标签: jquery colors jquery-animate tumblr


【解决方案1】:

试试这个

var $oldColour;

$('a').hover(function() {
    //code when hover over
    $oldColour = $(this).css('color');
    var rgb = getRGB($(this).css('color'));
    for (var i = 0; i < rgb.length; i++)
        rgb[i] = Math.min(rgb[i] + 60, 255);
    var newColor = 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')';
    $(this).animate({'color': newColor}, 800);
}, function() {
    //code when hovering away
    $(this).animate({'color': $oldColour}, 800);
});

【讨论】:

  • 耶耶哈啊啊啊!带上你的忍者投掷明星,我很乐意为他们加油...谢谢坎布拉卡,非常感谢:)
  • 嗯,像往常一样,这在除 IE 之外的所有浏览器中都能完美运行 - 知道为什么吗?
  • 该死的......也许是getRGB函数?也许在每行之间放置警报,以便告诉您实际运行了多少。我讨厌 IE...
  • 我想我可能已经找到了 IE 的问题。在第一次运行时,IE 使用 HEX 值来转换颜色,之后,一旦你再次将鼠标悬停在链接上,它就会使用 RGB 值......你碰巧有一个方便的 HEX = RGB 转换器吗?无论如何,如果你想检查一下,我已经为鼠标悬停事件的每个阶段放入了一堆 console.logs :)
  • 我在这里继续这个问题:stackoverflow.com/questions/4262417/… - 在那里你可以看到 getRGB 函数以及我认为代码应该如何工作的详细演练。有趣的是,在 IE 中,它只会在第一次悬停时颜色错误,此后,它就可以完美运行。
猜你喜欢
  • 1970-01-01
  • 2011-11-22
  • 2015-02-03
  • 2015-06-22
  • 2023-03-11
  • 2010-09-16
  • 2016-03-20
  • 2016-03-26
  • 1970-01-01
相关资源
最近更新 更多