无法使用jQuery为边框颜色设置动画

时间:2012-05-01 12:47:31

标签: javascript jquery html animation html-table

我有这张桌子:

<table id="social" border="5">
    <tr>
        <td>
            <iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fyannbane.blogspot.com%2F&amp;send=false&amp;layout=button_count&amp;width=100&amp;show_faces=true&amp;action=like&amp;colorscheme=light&amp;font&amp;height=21&amp;appId=177127339057410" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe>
        </td>

        <td>
            <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://yannbane.blogspot.com/" data-via="Yannbane">Tweet</a>
        </td>

        <td>
            <g:plusone></g:plusone>
        </td>
    </tr>
</table>

我想用jquery为它的边界设置动画,如下所示:

$("#social").animate({"borderTopColor": "#f00", "borderBottomColor": "#fff"}, 800);

但是,它不起作用!什么都没发生,即使没有显示错误......

我也试过这个:

$("#social").animate({"border-top-tolor": "#f00", "border-bottom-color": "#fff"}, 800);

但结果相同......你是怎么做到的?

2 个答案:

答案 0 :(得分:7)

来自jQuery animate reference(我的重点)

  

所有动画属性都应设置为单个数值,   除非如下所述; 大多数非数字属性都不能   使用基本的jQuery功能进行动画处理(例如,宽度,   高度或左边可以设置动画,但背景颜色不能,   除非使用了jQuery.Color()插件)。属性值被处理   除非另有说明,否则为多个像素。单位em和%   可以在适用的地方指定。

简而言之,您似乎需要Color()插件,或者需要自己动手。

安德鲁对this question的回答似乎可以帮助您完成所需的工作。

答案 1 :(得分:3)

你应该像其他人已经指出的那样使用Color插件。

但是,作为旁注,您可以使用一种有趣的技术,其中包含动画变量(在本例中为color变量),然后在step函数中执行您的操作。

这可能有点矫枉过正,但为您提供了很多自定义动画的灵活性:

// animate color variable from 0x0 to 0xF
$({ color: 0 }).animate({ color: 15}, {
    duration: 800,
    step: function(now, fx) {
        var hexValue = Math.round(now).toString(16);
        $("#social").css({
            'border-top-color': '#' + hexValue + '00',
            'border-bottom-color': '#' + hexValue + hexValue + hexValue
        });
    }
});

jsfiddle demo

以下是关于此技术的another answer