首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS不触发css动画

问JS不触发css动画
EN

Stack Overflow用户
提问于 2020-04-11 23:50:40
回答 2查看 40关注 0票数 1

第一次单击该按钮时,淡入淡出动画(更改不透明度)会起作用。但是对于下一步的所有点击,它不再起作用。当我进行调试时,它显示它每次都在工作。但在现实中,为什么不呢?

​

代码语言:javascript
复制
let colorArray = ['red','yellow','green','teal']
let index = 0

function imageChanger(){
    document.querySelector('.container').id = ''
    if(index == colorArray.length-1) index = 0
    else index++
    document.querySelector('.container').style.backgroundColor = colorArray[index]
    document.querySelector('.container').id = 'fade'
}
代码语言:javascript
复制
.container{
    height: 300px;
    max-width: 400px;
    background-color:  teal;
    
}
#fade{
    animation: fade 5s;
}
@keyframes fade{
    from{opacity:.4 }
    to{opacity: 1}
}
代码语言:javascript
复制
<button onclick="imageChanger()">Change</button>
<div class="container" id=""></div>

​

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-12 00:47:06

我基本上同意上面的答案。我只想指出,如果你想让第一个青色块显示为青色,而不是不透明的,你需要在你的初始html中包含fade类。

此外,如果您希望第一个转换为青色到红色,则应该从索引位置-1开始,而不是0。

代码语言:javascript
复制
<button onclick="imageChanger()">Change</button>
<div class="container fade" id=""></div>

let index = -1;
票数 0
EN

Stack Overflow用户

发布于 2020-04-12 00:04:39

一旦你添加了fade id,它就运行动画并且不再重复。

您应该每次都将其删除,然后重新添加。使用setTimeout让css有时间来发现它被移除了。

另外,我建议使用class代替id,使用过渡代替关键帧。

​

代码语言:javascript
复制
let colorArray = ['red','yellow','green','teal']
let index = 0

function imageChanger(){
    document.querySelector('.container').id = ''
    if(index == colorArray.length-1) index = 0
    else index++
    document.querySelector('.container').style.backgroundColor = colorArray[index]
    document.querySelector('.container').classList.remove('fade')
    setTimeout( function(){    document.querySelector('.container').classList.add('fade')
}, 50);
}
代码语言:javascript
复制
.container{
    height: 300px;
    max-width: 400px;
    background-color:  teal;
    opacity: .2;
    transition: opacity 0s linear;
}
.container.fade{
    transition: opacity 3s linear;
    opacity: 1;
}
代码语言:javascript
复制
<button onclick="imageChanger()">Change</button>
<div class="container fade"></div>

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61159572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档