预加载图片?
我一直在研究使用JQuery预加载图像,并使用jQuery遇到了这个预加载图像
现在可以有人告诉我,我是否必须以任何方式调用预装的图像? 我假设这创建了一个img然后浏览器缓存了它(至少对于那个页面)我只是通过它的URI使用预加载的图像?
有人可以澄清一下吗?
可以使用一行简单的JavaScript来预加载图像:
new Image().src='image.png';
要预加载JavaScript文件,请使用JavaScript include_DOM技术并创建一个新文件
标签,如下所示:
var js = document.createElement('script'); js.src = 'mysftuff.js'; document.getElementsByTagName('head')[0].appendChild(js);
这是CSS版本:
var css = document.createElement('link'); css.href = 'mystyle.css'; css.rel = 'stylesheet'; document.getElementsByTagName('head')[0].appendChild(css);
在第一个示例中,请求但从未使用过图像,因此它不会影响当前页面。 在第二个示例中,脚本被添加到页面中,因此在下载时,它将被解析并执行。 CSS也是如此 - 它也将应用于页面。 如果这是不合需要的,您仍然可以使用XMLHttpRequest预加载资产。
有关“ 让您的网站超高速 ”的完整教程,请访问我从许多网站和博客中挑选的以下链接
使用jQuery预加载图像
如果服务器设置了正确的缓存标头,则应该缓存图像,您应该只需使用URL即可立即获取图像。
您可以使用以下方式预加载所有图像:
function loadImages(){ var images = [ 'http://sofzh.miximages.com/javascript/image1.png', 'http://sofzh.miximages.com/javascript/image2.jpg', 'http://sofzh.miximages.com/javascript/image3.jpg', 'http://sofzh.miximages.com/javascript/image4.jpg' ]; $(images).each(function() { var image = $('').attr('src', this); }); }
我只使用CSS预加载了很多。 我不喜欢jQuery版本,因为你必须等待首先加载库,如果它们没有启用JS,或者jQuery被延迟,它们在翻转时会有明显的图像更改延迟。
如果在图像完成预加载时需要回调,请使用JS / jQuery。 否则,请使用CSS。
这只是一种使用的方法 HTML CSS 另一种方法是简单地将背景图像设置为页面上隐藏的元素,并使用您需要预加载的图像。 HTML CSS :before
,浏览器支持限制(
.logo { background:url(logo-1.png); } .logo:before { content: url(logo-2.png); width: 0; height: 0; visibility: hidden; }
#preload-logo-2 { background: url(logo-2.png); height: 0; width: 0; visibility: hidden; }