【发布时间】:2011-03-06 10:45:56
【问题描述】:
我一直在做大量的研究,并且有大量的插件和教程涵盖了大型背景图像的使用。不幸的是,它们都有一个共同点——它们使用绝对定位的图像来表现“假”背景图像。
通常这对我来说很好,我之前也这样做过,但是,这个项目有一个重复的背景图像,所以我有必要使用普通的 CSS 规则来声明背景图像。
说了这么多,有没有办法检查图像是否已加载并告诉 jQuery 在加载后淡入此背景图像?我正在寻找的主要内容是 jQuery 验证图像是否实际加载的方法。如果没有,那么我想我需要接受一个简单的静态延迟(不幸的是,这会破坏连接速度慢的用户的效果)。
最后一件事 - 这可以通过 CSS 类切换/切换来完成,以便我可以在加载图像之前和之后更改 body 类吗?对于没有 javascript 的用户来说,这将是一个后备方案,这样我就不必在加载背景图像时 .hide() 我的整个身体。
*编辑:这个帖子似乎有类似的讨论,但我不认为这是完全相同的事情:How do I delay html text from appearing until background image sprite is loaded? *
* 编辑 2 *
看起来上面的线程毕竟工作了,除了我仍然缺少淡入淡出效果。我故意将 fadeIn 设置得很高,但由于某种原因它没有动画,有什么想法吗?
<script>
$(function() {
// create a dummy image
var img = new Image();
// give it a single load handler
$(img).one('load',function() {
$('html').css('background','url(<?php bloginfo( 'template_url' ); ?>/images/red_curtain.jpg) top center repeat-y').fadeIn(12000); // fade in the elements when the image loads
});
// declare background image source
img.src = "<?php bloginfo( 'template_url' ); ?>/images/red_curtain.jpg";
// make sure if fires in case it was cached
if( img.complete )
$(img).load();
});
</script>
【问题讨论】:
标签: javascript jquery css