JQuery - 预加载图像(使用 JQuery / 本机 JavaScript / CSS)
Posted
技术标签:
【中文标题】JQuery - 预加载图像(使用 JQuery / 本机 JavaScript / CSS)【英文标题】:JQuery - Preload Images (using JQuery / native JavaScript / CSS) 【发布时间】:2013-11-12 02:43:44 【问题描述】:我之前问过一个关于如何将鼠标悬停在小图像上并将附加图像加载到页面右侧的问题。我一切正常,但现在我想预加载图片。
如何使用 JQuery 预加载图像,以便在需要时立即向用户显示(无需加载时间)?
【问题讨论】:
这几乎是一个重复的问题。无需 jQuery 预加载图像。在这里进行简单的搜索,您会发现有关该主题的数十篇文章。这是一个甚至会在它们全部加载后给您回电:Image preloader javascript that supports events 【参考方案1】:您可以很容易地预加载图像,如下所示:
使用 JQuery
function preloadImg(src)
$('<img/>')[0].src = src;
preloadImg('http://yoururl/to/the/picture.jpg');
或原生Javascript
function preloadImg(src)
var img = new Image();
img.src = src;
preloadImg('http://yoururl/to/the/picture.jpg');
或使用 CSS(无需 JavaScript)
您还可以使用 CSS(和 html)预加载图像
CSS:
div#preload display: none;
HTML:
<div id="preload">
<img src="http://yoururl/to/the/picture1.jpg" />
<img src="http://yoururl/to/the/picture2.jpg" />
<img src="http://yoururl/to/the/picture3.jpg" />
</div>
【讨论】:
所以,我会替换 preloadImg('yoururl/to/the/picture.jpg');与我使用的每张图片的网址?这将如何改变我调用 .hover 的方式? 基本上是的。你能解释一下你到底想做什么吗? 感谢您回复我。正如你在上面看到的,我有一个 html 表。在一个预加载图像的最简单方法是这样的:
function preload(selector, url)
$('<img/>').attr(
src: url,
height: '1px',
width: '1px'
).appendTo($(selector)).delay(1000).remove();
【讨论】:
【参考方案3】:我是这样做的。
我查找了任何悬停状态图像,然后通过将 -nm(正常)替换为 -hv(悬停)来预加载悬停状态
这样做的好处在于没有对 URL 进行硬编码
$(function()
$(this).find("img[src*='-nm']").each(function ()
$('<img/>')[0].src = this.src.replace(/-nm/, "-hv");
);
)
【讨论】:
以上是关于JQuery - 预加载图像(使用 JQuery / 本机 JavaScript / CSS)的主要内容,如果未能解决你的问题,请参考以下文章