7

我正在尝试通过使用 JQuery 更改背景颜色来创建简单的脉冲效果。但是,我无法让 backgroundColor 设置动画。

function show_user(dnid) {
    /* dnid is HTML ID of a div. */
    if (! $(dnid).is(':visible')) {
        $(dnid).show()
    }
    $('html, body').animate({scrollTop: $(dnid).offset().top});
    $(dnid).animate({backgroundColor: "#db1a35"}, 1200);
}

奇怪的是,这个替代动画有效:

$(dnid).animate({opacity: "toggle"}, 1200);

但这根本不是我想要的。

此外,函数中的 show() 和滚动功能可以正常工作。只是背景颜色动画没有。

上面的函数是通过这个链接调用的 <a href="#" onclick="javascript:show_user('#9e4cde88b90004ea722e9e129ed83747')">Locate Me</a>

有人可以帮我为背景颜色设置动画吗?

=========

感谢大家的帮助。很多类似的答案。这就是我最终得到的

在我的标题中

<script src="http://code.jquery.com/color/jquery.color-2.1.2.min.js"></script>

然后在滚动动画之后的我的 show_user 函数中。

var bgcol = $(dnid).css('backgroundColor');
$(dnid).animate({backgroundColor: "#db1a35"}, 2000);
$(dnid).animate({backgroundColor: bgcol}, 2000);

这会产生一个相对较快的红色“脉冲”,从而吸引用户的眼球。

再一次感谢你的帮助。

4

5 回答 5

16

默认情况下,jQuery 不能为颜色设置动画。为了使颜色动画化,请使用官方的jQuery.Color插件。

所有动画属性都应动画为单个数值,除非以下说明;大多数非数字属性无法使用基本的 jQuery 功能进行动画处理(例如,宽度、高度或左侧可以进行动画处理,但背景颜色不能进行动画处理,除非使用 jQuery.Color() 插件)。

来源

于 2013-05-31T18:33:58.990 回答
4

jQuery 支持任何数字CSS 属性之间的动画,其中不包括颜色。但是,还有其他库可以使颜色动画化。一个这样的库是恰当命名的jQuery Color。它的自述页面显示了几个示例,说明如何使用 jQuery.animate()函数在颜色之间进行动画处理

于 2013-05-31T18:39:10.763 回答
2

使用 CSSanimation属性和keyframes

看到它在行动

HTML

<div></div>

CSS

div {
    background-color: red;
    height: 200px; width: 200px;
    -webkit-animation: pulse 1s ease-in 0 infinite normal both;
    -moz-animation: pulse 1s ease-in 0 infinite normal both;
    -o-animation: pulse 1s ease-in 0 infinite normal both;
    animation: pulse 1s ease-in 0 infinite normal both;
}

@-webkit-keyframes pulse {
    0% { background-color: red; }
    65% { background-color: #7F0093; }
    100% { background-color: blue; }
}
@-moz-keyframes pulse {
    0% { background-color: red; }
    65% { background-color: #7F0093; }
    100% { background-color: blue; }
}
@-ms-keyframes pulse {
    0% { background-color: red; }
    65% { background-color: #7F0093; }
    100% { background-color: blue; }
}
@-o-keyframes pulse {
    0% { background-color: red; }
    65% { background-color: #7F0093; }
    100% { background-color: blue; }
}
@keyframes pulse {
    0% { background-color: red; }
    65% { background-color: #7F0093; }
    100% { background-color: blue; }
}
于 2013-05-31T18:54:23.657 回答
0

您必须首先将背景设置为从颜色,否则它不会第二次做任何事情。您还拼写了 css 属性'background-color'并将其放在引号中,就像我没有:)

$(dnid).css({'background-color': "#ffffff"});

$(dnid).animate({'background-color': "#db1a35"}, 1200);
于 2013-05-31T18:41:59.883 回答
0

只需在您的 jQuery 脚本下方添加此代码即可:

<script src="https://cdn.jsdelivr.net/jquery.color-animation/1/mainfile"></script>
于 2017-06-16T09:02:48.553 回答