【问题标题】:jQuery text colour change animationjQuery文本颜色变化动画
【发布时间】:2012-04-02 21:29:28
【问题描述】:

我今天一直在努力尝试获得一个鼠标悬停文本颜色更改脚本,该脚本从更改字符串的第一个字母,然后是之后的每个字母进行动画处理。

它如此有效地创建了几乎一张颜色变化的幻灯片?我希望你明白我的意思。

我真的很困惑,最终将我想要动画的文本转换为字符串,将字符串转换为数组,然后使用设置超时的循环将数组中的每个元素更改为新颜色。

但我的逻辑肯定是到处都是,而且一切都行不通!

有人可以看看这个或为我提供一个解决方案!谢谢

http://jsfiddle.net/OwenMelbz/qTbzq/

【问题讨论】:

  • 那么,每个字母在鼠标悬停时应该在 3 秒之间变成黄色?
  • 鼠标悬停应该会触发颜色变化序列是的,序列是让每个字母变黄,中间有很短的延迟,我设置了3秒作为测试
  • 好的,所以你要在屏幕上显示一种黄色字母的“级联”,对吧?
  • 是的!在谷歌搜索预制脚本时,我真的想不出用什么词来形容它!

标签: jquery animation text colors


【解决方案1】:

这样的事情怎么样:jsFiddle example

jQuery:

var string = $('h2').text();
var letters = string.split('');
var x = string.length;
$('h2').text('');
$.each(letters, function(index) {
    $('h2').append('<span id="e' + index + '" class="normal">' + letters[index] + '</span>');

});
function Animate(elem) {
    setTimeout(function() {
        $('#e'+elem).animate({
            'color': 'yellow'
        }, 500, function(){elem++;Animate(elem)});
    }, 50);
}
$('h2').mouseenter(function() {
    Animate('0');
}).mouseleave(function() {});

HTML:

<h2>OWEN MELBOURNE</h2>

【讨论】:

  • 唯一的问题(我几乎不会称之为问题)是您的代码尝试为单词之间的脚趾空间着色(并且显然失败),导致突出显示N 和两个词之间的 M。
  • @ElliotBonneville - 如果 OP 有问题,可以轻松更改。
  • 也非常感谢!这对我来说又是一个很大的帮助!!效果很好! - 是的,时间流逝很明显,但我会在将字符串转换为数组中添加一个语句,这将删除空格:) 谢谢!
  • @OwenMelbourne-没问题。如果您需要我发布修改后的 jsFiddle,请告诉我。
【解决方案2】:

永远带我去,但试试这个:http://jsfiddle.net/mQ2UV/3/

$(function() {
    var h2 = $('h2');
    var letters = h2.text().split('');
    var n = letters.length;

    h2.html('');

    for (var i = 0; i < n; i++) {
        h2.append("<span class='normal' id='l" + i + "'>" + letters[i] + "</span>");
    }

    var attached = false;

    $('h2').mouseover(function() {
        if (attached) {
            return;
        }
        attached = true;

        var n = 1;

        $("span").each(function() {
            var t = this;
            setTimeout(function() {
                $(t).removeClass("normal").addClass("yellow");
            }, 100 * n);
            n++;
        });

    });
});​

【讨论】:

  • 啊,非常感谢!是的,我不知道看起来如此简单的事情怎么会花费这么多精力!非常感谢您的帮助,这确实是一种享受!:D
  • 很高兴它有帮助!我在使用setTimeout 进行延迟时遇到了麻烦。我想这就是我几个月不使用 JavaScript 得到的结果。
【解决方案3】:

参考以下链接中使用Jquery Event change()方法的变色文字脚本..免费脚本可用。

http://www.hscripts.com/scripts/jquery/color-changing-text.php

【讨论】:

  • 请注意,link-only answers are discouraged,SO 答案应该是搜索解决方案的终点(相对于另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
猜你喜欢
  • 1970-01-01
  • 2011-11-22
  • 2016-03-26
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2011-04-10
相关资源
最近更新 更多