javascript - 如何为 CSS 框阴影深度设置动画(使用 jQuery 或 CSS3 过渡)?

标签 javascript jquery css css-transitions

这确实会造成延迟,但似乎直到最后才应用样式更改:

for (i=20;i>=0;i--) {            
    var boxShadow = i+"px "+i+"px "+i+"px #888";
    $('article').css("box-shadow", boxShadow);
    sleep(20);
}
function sleep(ms)
{
    var dt = new Date();
    dt.setTime(dt.getTime() + ms);
    while (new Date().getTime() < dt.getTime());
}

这根本不应用延迟:

for (i=20;i>=0;i--) {            
    var boxShadow = i+"px "+i+"px "+i+"px #888";
    $('article').delay(500).css("box-shadow", boxShadow);
}

使用 css3 过渡可以更轻松地完成这项工作吗?我只是在延迟示例中犯了一些小的 jquery 错误吗?

感谢任何能提供帮助的人。

最佳答案

您可以使用类和 setTimeout 来为您的动画效果使用 CSS3 过渡:

CSS--

#some-element {
    -webkit-transition : all 0.5s linear;
       -moz-transition : all 0.5s linear;
        -ms-transition : all 0.5s linear;
         -o-transition : all 0.5s linear;
            transition : all 0.5s linear;
}
#some-element.ani-state {
    -webkit-box-shadow : 0 0 24px #000;
       -moz-box-shadow : 0 0 24px #000;
            box-shadow : 0 0 24px #000;
}

由于 Chrome,我使用 all 作为转换声明...某些版本的 Chrome 使用 -webkit-box-shadow 而较新的版本使用 box-阴影all 如果您不更改元素的任何其他属性(或者如果您想要为这些属性更改设置动画)则没什么大不了的。

JS--

$(function () {

    var $someElement = $('#some-element');

    $someElement.on('click', function () {
        $someElement.addClass('ani-state');
        setTimeout(function () {
            $someElement.removeClass('ani-state');
        }, 500);
    });
});

这是一个演示:http://jsfiddle.net/jasper/tvfPq/1/

请注意,在演示中我使用了两个 box-shadows:box-shadow : 0 0 24px #000, inset 0 0 24px #999;

关于javascript - 如何为 CSS 框阴影深度设置动画(使用 jQuery 或 CSS3 过渡)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538249/

相关文章:

javascript - QWebElement评估JavaScript this.click()方法不起作用

jQuery:成功时更改链接文本

javascript - jQuery 在加载时按 ID 删除 div

css - 向内部 div (nestd divs) 添加滚动条

html - 在鼠标悬停时激活更多的一个过渡

javascript - 如何防止仅在一个 Rails Controller 上加载 css 和 js 表?

javascript - 将数组中的所有键值推送到新数组中,只要不同键的值(在同一对象中)满足特定条件

javascript - 谷歌地图在输入时显示错误的位置

php - OneupUploaderBundle(blueimp),- 不允许使用方法

html - 如何创建没有屏幕大小一半的填充/边距的 Bootstrap 列?