另一种在PageLoad上使对象的定时淡入效果的方法
Another way to make Timed FadeIn effect of objects on PageLoad
>我使用Visual Studio 2012为我的空Web应用程序项目和我使定时淡入淡出在PageLoad上的对象效果,但在我看来这种方式有点糟糕。我认为像这样使用的setTimeout函数使用了很多计时器,这是一种浪费.第一个计时器在1000ms后结束 第二个计时器在1500ms后结束,整个脚本都是"木头"
这是我制作的 ASPX 代码
<script type="text/javascript" id="fadeIn1" >
$(document).ready(function () {
$('#Panel2').hide();
$('#Image4').hide();
$('#Image3').hide();
$('#Image2').hide();
$('#Label1').hide();
$('#Panel3').hide();
$('#Panel2').fadeIn(2000);
setTimeout("$('#Image2').fadeIn(1000);", 1000);
setTimeout("$('#Panel3').fadeIn(1000);", 1500);
setTimeout("$('#Image3').fadeIn(2000);", 2000);
setTimeout("$('#Label1').fadeIn(2000);", 2000);
setTimeout("$('#Image4').fadeIn(2000);", 2000);
});
</script>
但是像这样更好的脚本呢:
<script type="text/javascript" id="fadeIn1" >
$(document).ready(function () {
$('#Panel2').hide();
$('#Image4').hide();
$('#Image3').hide();
$('#Image2').hide();
$('#Label1').hide();
$('#Panel3').hide();
$('#Panel2').fadeIn(2000);
(set delay)
$('#Image2').fadeIn(1000);
(set delay)
$('#Panel3').fadeIn(1000);
(set delay)
$('#Image3').fadeIn(2000);
(set delay)
$('#Label1').fadeIn(2000);
(set delay)
$('#Image4').fadeIn(2000);;
});
</script>
你可以做这样的事情:
$('#Panel2').fadeIn(2000, function () {
$('#Image2').fadeIn(1000. function () {
$('#Panel3').fadeIn(1000);
});
});
等。。。
这将在第一个动画完成后触发下一个动画,而无需额外的延迟
我建议使用值表,然后循环访问该表。 保存大量复制的代码:
<script type="text/javascript" id="fadeIn1" >
$(document).ready(function () {
// list of items with [selector, delay time, fade time]
var items = ["#Panel2", 0000, 1000, "#Panel3", 1500, 1000,
"#Image2", 1000, 1000, "#Image3", 2000, 2000,
"#Image4", 2000, 2000, "#Label1", 2000, 2000];
for (var i = 0; i < items.length; i+=3) {
$(items[i]).hide().delay(items[i+1]).fadeIn(items[i+2]);
}
});
</script>
此外,您可以使用.delay()
而不是setTimeout()
动画,并且可以将jQuery方法链接在同一jQuery对象上,而不是重复。
如果您也控制 HTML,则可以为所有这些项提供一个公共类,并将 HTML 中的延迟和淡入淡出时间信息作为数据属性。 HTML 将如下所示:
<div id="Panel2" class="initialFade" data-delay="1000", data-fadeTime="1000"></div>
<div id="Panel3" class="initialFade" data-delay="1500", data-fadeTime="1000"></div>
...
然后,jQuery将如下所示:
<script type="text/javascript" id="fadeIn" >
$(document).ready(function () {
$(".initalFade").each(function() {
var item = $(this).hide();
item.delay(item.data("delay")).fadeIn(item.data("fadeTime"));
});
});
</script>
如果你只想把它们全部淡入,你可以在一个选择器中调用所有对象,并使用使用回调循环的函数将它们全部淡入:
$(function() {
function fadeObjs(objs) {
if (objs.length >0) {
var ele = objs.eq(0);
ele.fadeIn(1000,function() {
fadeObjs(objs.slice(1));
});
}
}
var objs = $('#Panel1,#Image2,#Panel3,#Image4,#Panel5');
objs.hide();
fadeObjs(objs);
});
如果要延迟,请在使用 jQuery 延迟在淡入之前添加延迟:
ele.delay(1000).fadeIn(1000,function() {
fadeObjs(objs.slice(1));
});
如果您需要不同的淡入淡出速度或延迟,jfriends 方法很好,或者您可以使用速度和延迟作为参数制作对象列表
$(function() {
var objs = { '#Panel1':[1000,1000],'#Image2':[1000,1000],'#Panel3':[1500,1000],'#Image4':[1000,200],'#Panel5':[1500,500] };
for (k in objs) {
$(k).hide().delay(objs[k][1]).fadeIn(objs[k][0]);
}
});
相关文章:
- Javascript将图像src更改为淡入淡出
- css(或jQuery)悬停时淡入淡出
- 将淡入淡出添加到“我的身体背景滑块”
- 多重潜水淡入淡出打开
- 添加/删除类淡入淡出不起作用
- 带有计数器、缩略图、进度条和淡入淡出效果的简单jQuery幻灯片
- 页面加载跳转jquery淡入
- 使用jquery淡入淡出
- 淡入不带HTML的背景图像
- 淡入淡出脚本不起作用
- 具有淡入淡出效果的全背景图像
- jQuery滑块淡入淡出
- 悬停时淡入背景色
- 在淡入淡出之间淡入淡出
- 有没有一种方法可以从隐藏的可见性(CSS,JS)中获得淡入效果
- jQuery idTabs-使用鼠标悬停自动更改和淡入淡出
- 文本淡入淡出后循环加载页面
- 文本淡入淡出jquery
- 动画文本淡入淡出
- 另一种在PageLoad上使对象的定时淡入效果的方法