javascript - 在动画内部运行方法或在两个动画之间运行方法

标签 javascript html css animation

如何在内部运行方法和动画?或者运行两个动画和它们之间的方法?我正在尝试添加一个 div,然后将其不透明度从 0 更改为 1,然后运行一个方法,然后再次将不透明度从 1 更改为 0,某种加载屏幕。 我只是试图将动画和方法一分为二,并使用带有“动画结束”的事件监听器,但无法正常工作(第一次运行时有效,第二次使用 changeScreen 方法时,classList 说是 null 错误说:“未捕获的类型错误:无法读取 null 的属性“classList” 在 HTMLDivElement。

这里是方法:

const screen = document.createElement('div'); //Const to add the load screen 

screen.id = 'screen';

function changeScreen(token){

document.body.prepend(screen);
document.querySelector("#screen").classList.add("screenOff");
document.querySelector("#screen").addEventListener("animationend", function(){
    loadScreen(loadFile(token));
    document.querySelector("#screen").classList.remove("screenOff"); 
    document.querySelector("#screen").removeEventListener("animationed", null);
    retrieveScreen();
},false);
}

function retrieveScreen(){

document.querySelector("#screen").classList.add("screenOn");
document.querySelector("#screen").addEventListener("animationend", function(){
    document.querySelector("#screen").classList.remove("screenOn"); 
    document.querySelector("#screen").removeEventListener("animationed", null);
    screen.remove();
},false);
}

该方法获取一个标记(数字),然后我向主体添加一个名为 screen 的 div 元素并添加类 screenOff,这将启动 div 的动画变为黑色。然后使用事件监听器,我希望当屏幕变黑时,方法 loadScreen 会进行更改,然后我希望类更改为屏幕打开以将 div 从黑色变为不透明度 0,最后从屏幕上删除 div。 所有的工作除了删除停止第二个动画并且没有它 div 将在那里阻挡方式,这个方法应该执行多次做同样的事情。

如果有一种方法可以在一个动画示例中执行里面的 loadScreen 方法:

0% {opacity: 0;} 
50% {opacity: 1;} 
 ----- run loadScreen() then -----
50% {opacity: 1; }
100% {opacity: 0;}

会很好...

最佳答案

我找到了一种方法,使用 setinterval 我们可以添加和删除动画,我这样解决我的问题:

const screen = document.createElement('div'); //Const to add the load screen 

screen.id = 'screen';

//Function that calls the loadScreen and loadFile methods and manages the 
secuence of the screen changes.

function changeScreen(token){

let x = 0;
document.querySelector("#screen").classList.add("screenOff");

    let intervalID = setInterval(function () {

    if (x === 0) {  
    loadScreen(loadFile(token));
    load.play();
    document.querySelector("#screen").classList.remove("screenOff");
    document.querySelector("#screen").classList.add("screenOn"); 
    x++;
    }else{
    document.querySelector("#screen").classList.remove("screenOn");
    window.clearInterval(intervalID);
    }
}, 1400);   
}

关于javascript - 在动画内部运行方法或在两个动画之间运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53002122/

相关文章:

javascript - 提取 Javascript 对象中的嵌套值

html - 简单的 CSS float 问题

css - 将 div 直接放置在未知大小的图像下方

html - 进度条 CSS 样式问题

html - Bootstrap 中的进度条只显示百分比

javascript - AngularJS - 有条件地为路由设置 Controller

JavaScript 展平嵌套数组

javascript - 使用四元数值在 A-Frame 中移动 obj

javascript - 如何浏览图片并在浏览器中显示?

javascript - 如何修复追加功能后表格行未被单击的问题?