在 JavaScript 函数中添加时间延迟以实现淡入淡出效果

发布于 2024-10-16 03:50:34 字数 733 浏览 4 评论 0原文

我正在寻找一个可以慢慢淡入以隐藏图像加载的网站。现在,我已经设法获取一些可以淡入的 JavaScript,但它会在页面加载时立即启动,因此您在加载页面时仍然可以看到各个元素正在加载。

我想做的是在开始淡入之前添加一秒左右的延迟。

这是我现在得到的:

<style>fadein{filter:alpha(opacity=0);opacity:0}</style>

<script>

function fadein(){var fade=0, fadein=document.getElementById("index-wrappper").style,ms=(fadein.opacity==0)?0:1, pace=setInterval(Fade,20);

function Fade() {if(fade<100){fade+=1;if(ms)fadein.filter="alpha(opacity="+fade+")";else fadein.opacity=(fade/100)} else clearInterval(pace)}};

window.onload=fadein;

</script>

我怀疑我需要以某种方式在 Function fade 中添加延迟,因为 Fadein 是设置加载时 div 的不透明度为 0。

但我到底需要放什么东西呢?我对 javascript 的了解很少甚至没有(我真的需要温习一下),并且非常感谢任何有关这方面的帮助。

I'm looking to make a website that slowly fades in to hide the loading of the images. Now I've managed to get some javascript that does the fade in but it starts immediatly when the page loads so you still see the individual elements loading when you load the page.

What I would like to do is to add a delay of a second or so before it starts fading in.

Here is what i've got now:

<style>fadein{filter:alpha(opacity=0);opacity:0}</style>

<script>

function fadein(){var fade=0, fadein=document.getElementById("index-wrappper").style,ms=(fadein.opacity==0)?0:1, pace=setInterval(Fade,20);

function Fade() {if(fade<100){fade+=1;if(ms)fadein.filter="alpha(opacity="+fade+")";else fadein.opacity=(fade/100)} else clearInterval(pace)}};

window.onload=fadein;

</script>

I suspect that I need to add the delay in Function fade somehow since Fadein is what set the opacity of the div to 0 on load.

But what exactly do i need to put there? I have slim to none javascript knowledge (which i really need to brush up) and would really appreciate any help with this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

愿得七秒忆 2024-10-23 03:50:34

首先,Javascript不是Java。

您的问题的一个简单答案是:使用 setTimeout 和clearTimeout。

但坦率地说,我敦促您不要重新发明轮子,而是使用像 jQuery 这样的库,这些库的构建是为了使此类操作更容易并支持所有主要浏览器。在 jQuery 中你可以简单地写

$(document).ready(function() {
    $("#index-wrapper").delay(1000).fadeIn('fast');
});

First of all, Javascript is not Java.

A simple answer to your question is: use setTimeout and clearTimeout.

But frankly I would urge you not to reinvent the wheel, but to use libraries like jQuery that are built to make such actions easier and support all major browsers. In jQuery you could simply write

$(document).ready(function() {
    $("#index-wrapper").delay(1000).fadeIn('fast');
});
囍孤女 2024-10-23 03:50:34

试试这个:

window.onload = function() {
    window.setTimeout(function() {
        fadein();
    },1000); // 1 sec
}

这会在页面加载后延迟 1 秒淡入。

Try this:

window.onload = function() {
    window.setTimeout(function() {
        fadein();
    },1000); // 1 sec
}

This delays the fade in with 1 sec, after page load.

如果没有你 2024-10-23 03:50:34
window.onload=setTimeout("fadein()",1000);

应该可以解决问题。

window.onload=setTimeout("fadein()",1000);

should do the trick.

我只土不豪 2024-10-23 03:50:34

您是否考虑过使用 jQuery 库?

它免费、易于使用、完全满足您的需求,并且跨浏览器兼容。许多网站(包括这个网站)都使用它,因此如果您无法让它执行您想要的操作,您将能够获得帮助。

请注意,您问题中发布的脚本仅适用于 Internet Explorer,由 less 使用超过 50% 的人使用网络浏览器。

Have you considered using the jQuery library?

It's free, easy to use, does exactly what you want and is cross-browser compatible. Many sites (including this one) use it so you'll be able to get help if you can't get it to do what you want.

Note that the script posted in your question would work only on Internet Explorer, used by less than 50% of people as a web browser.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文