javascript - 定义自定义 css 属性并使用 animate() 更改任何值

标签 javascript jquery css animation

我正在尝试用 javascript 制作一个显示动画乐谱的结果屏幕。对于示例中的特定字段,它应该在两秒内从值变为 0,即屏幕出现后两秒。由于使用 animate() 更改 css 值很容易,我想我可以将值分配给一些自定义 css 属性,然后让元素的值从那里获取它。根据this article我只需要将 -- 放在自定义 css 属性和 this one 的前面向我展示了如何使用 animate() 方法。所以我试着这样做

$elementSuccess.css('--value', scorePlus);

结果是 --value 的值为 undefined。当我在某处显示 scorePlus 时,它出现了,所以它被定义了。还有另一种定义自定义值的方法吗?

这是该元素的完整代码。如果正确定义自定义属性,它会不会有任何错误?

$elementSuccess.html(scorePlus);
$elementSuccess.css('--value', scorePlus);
setTimeout(function(){
    $elementSuccess.animate({
            '--value': 0
        },
        {
            duration: 2000,
            progress: function(){
                $elementSuccess.html(Math.round($elementSuccess.css('--value')));
            }
        }
    );
},2000);

最佳答案

试试这个:

var scorePlus=100;
var $elementSuccess=$('.success');
var myObject = {score:scorePlus};
$elementSuccess.html(scorePlus);
$(myObject).delay(2000).animate({score:0},{duration:2000,progress:function(){$elementSuccess.html(Math.round(myObject.score))}});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="success"></div>

根据我对您的问题的理解,基本上使用伪 myObject 并为其 score 属性设置动画应该可以为您提供所需的效果。另外,我没有使用 setTimeout,而是使用 delay() .

关于javascript - 定义自定义 css 属性并使用 animate() 更改任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30534038/

相关文章:

javascript - 如何将 tds 追加到 tableRows 中?

javascript - 为什么触发器 ('click' ) 与 $ ('#test' ).trigger({ type : 'click' });?

jquery - 获取具有相同类的下一个元素

javascript - 几个句子/文本正弦波Jquery动画

javascript - 如何在功能上加入延迟?

javascript - 初始化 javascript 数字的最佳方法是什么?

javascript - 如何访问通过 jQuery load() 发送到 div 的 URL 参数

javascript - 隐藏 div 中的 tinyMCE 仅在第一次更新并且变为只读

css - 消除 2 个 div 之间不需要的空间

javascript - 从源映射中读取 HTML