【发布时间】:2013-12-18 20:50:31
【问题描述】:
我有几个想要淡出的页面元素。然后我更改它们的 css 类(虽然它们不可见),然后将它们淡入。
我以为我已经正确地订购了执行流程,但确实在 fadeOut 完成之前发生了 css 类转换。视觉上发生的事情是一个人看到 css 发生变化,然后发生淡出。
您可以在下面的链接中看到它。在幻灯片 1 和 2 之间发生了这种情况,但并不像从 a 类到 a 类的 css 变化那样明显。在幻灯片 2 和 3 之间,您可以看到它是从 a 类到 b 类。
http://staging.alexandredairy.com
jquery 转换代码 onReady 启动它:
var txtread =
{
onReady: function(_imgname)
{
txtread.fadeoutText(_imgname);
txtread.fadeinText();
},
fadeoutText: function(_imgname)
{
$("#pagetitle").fadeOut(1250);
$("#pagemenu").fadeOut(1250);
$("#pageslogan").fadeOut(1250);
$("#sitecopy").fadeOut(1550, txtread.TextReadabilityHandler(_imgname));
},
fadeinText: function()
{
$("#pagetitle").fadeIn(1250);
$("#pagemenu").fadeIn(1250);
$("#pageslogan").fadeIn(1250);
$("#sitecopy").fadeIn(1250);
},
TextReadabilityHandler: function(_imgNameSwitch)
{
if(_imgNameSwitch == 'Light')
{
$("#pagetitle").attr('class', 'sitetitle lighttextbackground');
$("#pagemenu").attr('class', 'sf-menu lighttextbackground');
$("#pageslogan").attr('class', 'slogan lighttextbackground');
}
else if (_imgNameSwitch == 'Dark_')
{
$("#pagetitle").attr('class', 'sitetitle darktextbackground');
$("#pagemenu").attr('class', 'sf-menu darktextbackground');
$("#pageslogan").attr('class', 'slogan darktextbackground');
}
else
{ alert(_imgNameSwitch); }
}
}
所以我认为执行顺序、更长的fadeOut 以及最后设置fadeOut 完成功能可以使事情保持井然有序,但唉。我错了。
谢谢
编辑
所以现在我尝试了 window.setTimeout,它的行为与超时甚至没有运行时完全相同???
好吧,我的错。我最初尝试过:
window.setTimeout(txtread.TextReadabilityHandler(_imgname), 3000);
这没有错误或工作。然后我回去重读了一点,看到使用回调,所以我这样重写:
window.setTimeout(function(){ txtread.TextReadabilityHandler(_imgname); }, 3000);
现在它正在工作。
我原来的问题仍然适用。我知道 javascript 是一种异步编程语言,但它是必要的,不是吗?可能我脑子里的术语都乱七八糟了。
以下是否一个接一个地执行:
alert('1');
alert('2');
alert('3');
还是它们都同时执行?
【问题讨论】:
标签: javascript jquery css