如何使用JavaScript控制CSS Animations和Transitions

 我来答
zwjtk
2017-09-25 · TA获得超过1741个赞
知道小有建树答主
回答量:300
采纳率:82%
帮助的人:203万
展开全部

你好,

这个问题稍微有点宽泛,我大概描述一下我的理解。

首先,JS控制CSS(style)属性,通常我们这么写:

testNode.style.display = 'block'; // 设置testNode元素的display样式为block

对应到设置CSS3的动画属性,应该是这样的:

// CSS3动画名称slidedown,这个由编写CSS动画的时候确定,独立属性:animation-name
// CSS3动画执行时长(0.2s),独立属性:animation-duration
// CSS3动画曲线函数(控制速度变化)ease-out,独立属性:animation-timing-function
testNode.style.animation = 'slidedown .2s ease-out';

根据以上注释,显而易见,我们也可以对独立属性进行设置,方法雷同:

testNode.style.animationName = 'slideup';
testNode.style.animationDuration = '.5s';

以上,便可以实现JS对CSS3 Animation属性的控制。然而,由于CSS3是新的标准,在一些旧版浏览器中并未实现支持,因此我们需要考虑兼容性,比如有些浏览器需要添加前缀-webkit-,另一些需要加前缀-moz-,还有-ms-、-o-等。

因此可以提供以下JS方法处理前缀问题:

function prefix(prop) {
    var div = document.createElement('div');
    var style = div.style;
    var firstChar = prop.slice(0, 1).toUpperCase();
    var upperProp = firstChar + prop.slice(1);
    var rs;
    if (('webkit' + upperProp) in style) {
        rs = 'webkit' + upperProp;
    } else if (('moz' + upperProp) in style) {
        rs = 'moz' + upperProp;
    } else if (('o' + upperProp) in style) {
        rs = 'o' + upperProp;
    } else if (('ms' + upperProp) in style) {
        rs = 'ms' + upperProp;
    } else {
        rs = prop;
    }
    return rs;
}

然后设置属性的时候可以按以下方式调用:

testNode.style[prefix('animationName')] = 'fadeout';
testNode.style[prefix('animationTimingFunction')] = 'linear';

好了,大概就是这样,Transition、Transform的处理方式类似~

希望是你想要的答案,有问题可追问。

sumiandting
2017-09-25 · TA获得超过102个赞
知道答主
回答量:74
采纳率:78%
帮助的人:42.1万
展开全部

Animations 可以用jq来控制动画: 

$('a').stop(true).animate({width: '+=20px'}, 5000);
$('a').stop(true).animate({height: '+=20px'}, 5000);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
视者尘颜
2017-09-25 · 超过15用户采纳过TA的回答
知道答主
回答量:67
采纳率:33%
帮助的人:21.7万
展开全部
你这问题问的有点模糊不清,没有具体的例子吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式