javascript - 倒退消失后如何让时钟出现在屏幕上
问题描述
我试图让这个与倒计时开始一起出现的时钟只在元素“GO!”之后开始。消失。我已经尝试在 setInterval 6 秒后开始执行此操作,但没有获得结果。请,如果有任何方法可以调试这个错误,即使使用 css 我也谢谢你。
var tempo = new Number();
tempo = 180;
function start(){
var number = document.getElementById("number");
number.innerHTML = `<div id="cinco">5</div>
<div id="quatro">4</div>
<div id="tres">3</div>
<div id="dois">2</div>
<div id="um">1</div>
<div id="go">GO!</div>
`
ContagemRegressiva();
}
function ContagemRegressiva(){
if(tempo >= 0){
var minutos = parseInt(tempo / 60);
minutos = (minutos % 60);
var segundos = (tempo % 60);
if(minutos < 10){
minutos = '0' + minutos;
minutos = minutos.substr(0,2); //-->
}
if(segundos < 10){
segundos = '0' + segundos;
}
setTimeout('ContagemRegressiva()',1000);
tempo--;
regressivo.innerHTML = minutos + '<font color=black>:</font>' + segundos;
if((minutos == 00) && (segundos == 00)){
regressivo.innerHTML = minutos + '<font color=black>:</font>' + segundos + '<black></font>';
}
}
}
.container {
text-align: center;
margin: 0 auto;
}
#cinco,
#quatro,
#tres,
#dois,
#um,
#go {
font-size: 0;
animation: .5s ease-in-out 2 forwards alternate zoom;
}
#quatro {
animation-delay: 1s;
}
#tres {
animation-delay: 2s;
}
#dois {
animation-delay: 3s;
}
#um {
animation-delay: 4s;
}
#go {
animation-delay: 5s;
animation-iteration-count: 1;
}
@keyframes zoom {
0% {
font-size: 0;
}
100% {
font-size: 150px;
}
}
@keyframes some {
to {
transform: scale(0);
transform-origin: center top;
}
}
#number {
animation: 0.5s some linear forwards;
animation-delay: 6s;
}
.clock{
position: absolute;
top: 12%;
left: 92%;
transform: translate(-50%, -50%);
font-size: 25px;
color:black;
}
<body onload="start()">
<div id="number" class="container" />
<div class="clock">
<b style="font-size: 10"></b><span id="regressivo"></span></b><br>
</div>
</body>
解决方案
您可以使用 setTimeout 函数来调用您的 ContagemRegressiva 函数。
function start() {
var number = document.getElementById("number");
number.innerHTML = `
<div id="cinco">5</div>
<div id="quatro">4</div>
<div id="tres">3</div>
<div id="dois">2</div>
<div id="um">1</div>
<div id="go">GO!</div>
`;
setTimeout(ContagemRegressiva, 6000);
}
您只需要在运行该函数之前找到等待的秒数。我在这里使用了 6000 毫秒。
第二种方式:您可以将“animationend”事件添加到您的#go 元素。当其上的动画结束时,将触发“animationend”事件。因此,您可以使用以下代码执行此操作:
function start() {
var number = document.getElementById("number");
number.innerHTML = `
<div id="cinco">5</div>
<div id="quatro">4</div>
<div id="tres">3</div>
<div id="dois">2</div>
<div id="um">1</div>
<div id="go">GO!</div>
`;
var goElem = document.getElementById('go');
goElem.addEventListener('animationend', ContagemRegressiva);
}
推荐阅读
- javascript - 在没有数据库的情况下管理用户的最佳方式
- javascript - Drawer.Navigator 道具在 iOS 上不起作用
- mysql - Mysql 索引:查询生成器的最佳实践
- java - Spring MVC 项目初始化
- java - 如何将 SQL UNION 与三个独立的 Ignite 缓存一起使用
- excel - 通过 Access VBA 对 Excel 进行排序的问题
- c# - 如何在 C# 中读取 google sheet api v4 中的 CellFormat?
- python - 一个 Hot Encoder 无法对分类数据类型进行编码
- c# - 我们如何修复 C# 中的 checkmarx 漏洞 Cleansing_Canonicalization_and_Comparison_Errors?
- javascript - 映射数据以显示 2 个属性