预加载CSS图片

141

我有一个隐藏的联系表单,点击按钮后会展开。它的字段被设置为CSS背景图像,并且它们总是比已切换的div稍晚出现。

我曾经在部分中使用这个代码片段,但是没有成功(即使我清除了缓存):

<script>
$(document).ready(function() {
        pic = new Image();
        pic2 = new Image();
        pic3 = new Image();
        pic.src="<?php bloginfo('template_directory'); ?>/images/inputs/input1.png";
        pic2.src="<?php bloginfo('template_directory'); ?>/images/inputs/input2.png";
        pic3.src="<?php bloginfo('template_directory'); ?>/images/inputs/input3.png";
});
</script>

我使用jQuery作为我的库,如果我能用它来解决这个问题就太棒了。

谢谢你的建议。


请展示你的代码。你如何切换这个表单? - n1313
1
n1313,我使用了最简单的方法: $ ('#toggle').click(function(){ $('#contact')。slideToggle(); }); - Peanuts
13个回答

1

将背景图片加载到某个隐藏的位置,这样页面打开时它就会被加载,一旦使用ajax创建表单,就不会花费任何时间:

body {
background: #ffffff url('img_tree.png') no-repeat -100px -100px;
}

1
您可以使用这个jQuery插件waitForImage,或者将图片放入一个隐藏的div中(width:0 and height:0),并在图片上使用onload事件。
如果您只有2-3张图片,您可以绑定事件并在链中触发它们,以便在每张图片之后执行一些代码。

0
如果页面元素及其背景图像已经在DOM中(即您不是动态创建/更改它们),那么它们的背景图像已经被加载。此时,您可能需要考虑压缩方法 :)

嗯...不错的观点cpharmston,这也解释了为什么即使图像被缓存,问题仍然存在。那么,这意味着没有解决方法吗? - Peanuts
创建较小的图像!JPEG 可以轻松压缩,有命令行工具可以减小 PNG 的大小(http://pmt.sourceforge.net/pngcrush),您还可以减少图像中的颜色数量以减小 GIF 的大小。当然,您也可以选择更快的互联网服务 ;) - chuckharmston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接