【发布时间】:2012-11-05 23:53:18
【问题描述】:
我的清晰动画有效,我的显示动画有效,但是当我尝试做一个然后另一个时,它似乎使所有编程都无效。我确信有一个我没有看到的简单论点。
var opac = null;
var removeGif = document.getElementById('splash');
function dissappear (elem, speed) {
if (opac) clearTimeout(opac);
if ( !elem.style.opacity ) {
elem.style.opacity = 1;
}
setTimeout(function() {
setInterval(function() {
elem.style.opacity -= 1;
}, speed / 50);
},10);
}
dissappear(removeGif, 250000);
var folio = document.getElementById('content');
function appear (elem, speed) {
if (opac) clearTimeout(opac);
if ( !elem.style.opacity ) {
elem.style.opacity = 0;
}
setTimeout(function() {
setInterval(function() {
elem.style.opacity += 1;
}, speed / 50);
},10);
}
appear(removeGif, 250000);
如果有人能看到问题,请告诉我。
【问题讨论】:
-
您永远不会将
setTimeout的结果分配给opac,因此opac将始终为null。你应该在那里做一些不同的事情吗? -
如果您尝试为元素“消失”和“出现”设置动画,为什么要将不透明度增加/减少
1- 不透明度的值可以是从0到@ 的任意值987654328@,所以你可能想要一个更小的值。而且我不确定您对setIntervals 的处理是否正确-它们将永远运行,因为您永远不会清除它们。正如 Cory 指出的那样,这根本不应该工作,因为你实际上并没有在任何地方设置opac。如果你设置opac,那么它会起作用,但它会是一闪而过的消失,而不是渐进的。 -
我希望交换在 250000 毫秒后立即进行,因此没有褪色是没有问题的。我什至需要间隔或超时吗?
-
@horribly_n00bie:如果您不想要“淡入淡出”效果,则不需要间隔。您可能也不需要超时,只需快速连续运行三个步骤:(1) 获取对启动画面和内容的引用,(2) 隐藏启动画面,然后 (3) 显示内容。如果它看起来闪烁太剧烈,您将不得不决定该怎么做。
标签: javascript animation opacity splash-screen