我做了一个动画:一个鬼出现又消失。而且,他在场的时间少于他不在场的时间,这正是我想要的。
但是出现的时间是不能调节的,但是,好像是取决于整个区间的时间t
var t = setInterval(function appear(){
var ghost = document.getElementById("ghost");
if (ghost.style.display == "none")
{ghost.style.display = "block";}
else
{var t1 = setTimeout(function disappear(){
ghost.style.display = "none";
}, 1)}
}, 6000)
它应该按功能消失t1。我想做的更少。延迟t1减少到1ms,但没有响应。为什么是这样?
var t = setInterval(function appear() {
var ghost = document.getElementById("ghost");
if (ghost.style.display == "none") {
ghost.style.display = "block";
} else {
var t1 = setTimeout(function disappear() {
ghost.style.display = "none";
}, 1)
}
}, 6000)
body {
background: black url(https://s.cdpn.io/16327/texture_bg.jpg) no-repeat 50% 0px;
}
#ghost {
position: absolute;
left: 25%;
display: none;
}
<img id="ghost" src="https://isstatic.askoverflow.dev/nrYtc.png" width="280">
您的代码的问题是您在 else 分支中编写了消失的期望。
这意味着这个分支没有机会在当前的 setInterval 迭代中执行。
要控制消失时间,需要在显示后立即设置setTimeout。
第二个问题是验证:
这不适用于通过级联表检索到的样式(即,如果样式不是在元素本身上指定的,而是在 css 中指定的)。
您可以手动初始化元素的样式,也可以在应用 css 后使用getComputedStyle获取实际的元素样式。
所以你可以通过改变变量
showSeconds和的值来改变可见/不可见图像的时间间隔hideSeconds。