San*_*cci 10 css jquery background
假设我们有一张图片幻灯片.这些图片的缩略图显示在div包装器中,带有一个滑块(我用Jquery创建),每个图像都包含在<li>一个CSS背景集中,当然代表图像.我选择使用背景图像作为布局问题,因为它们的大小和宽高比都不同.
图像来自数据库并动态创建.
我想做的是:
在每个上显示"加载"消息<li>并等待,直到后台(图像)加载到缓存中,然后用fadeIn显示它.他们只有我能想到的方式(不是因为我不能确定如何以及它是否可行)是:
<li>同时显示"加载"消息除了可行的事情,这意味着他们将按顺序加载,所以如果由于某种原因不会加载脚本将永远不会继续!
我已经看到一些使用JS加载图像的网站只有在浏览器可见的情况下加载图像时,这可能与我正在寻找的情况相同,因为我使用的是滚动条,只有部分图像显示在一旦页面加载
好吧,我认为如果你只是使用img标签,事情可能会更简单,但如果你确实想要使用背景图像,那么我只能想出一个解决方法.
诀窍是创建一个新图像(使用Javascript图像对象),并确保它已加载,但不显示此图像.加载图像并在缓存中后,该图像将作为图库中的背景图像.
因此,您所要做的就是确保LI在加载相应图像后仅更改图像的背景图像.您LI最初可以使用默认的"加载"图像加载所有s.
所以你的代码将是这样的:
HTML(style加载图像的定义可以在您的外部样式表中):
<ul>
<li id="pic1" style="background-image:url('images/loading.gif')"></li>
<li id="pic2" style="background-image:url('images/loading.gif')"></li>
<li id="pic3" style="background-image:url('images/loading.gif')"></li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
你的jQuery/Javascript:
var img = new Array();
// The following would be in some sort of loop or array iterator:
var num = [NUMBER] // You'd use this number to keep track of multiple images.
// You could also do this by using $("ul>li").each() and using the index #
img[num] = new Image();
// Specify the source for the image
var imgSource = "http://yourimage.com/example.jpg";
// only append the corresponding LI after the image is loaded
img[num].onload = function() {
$("#pic" + num).attr("style", "background-image:url('" + imgSource + "')");
};
img[num].src = imgSource;?
Run Code Online (Sandbox Code Playgroud)
您必须为每个人提供适当的CSS/ID等LI,并且您必须使上述内容适应您用于显示图库的循环或功能.
这是一个jsFiddle示例.(出于测试目的,它是一个很大的图像,所以加载需要一段时间).
| 归档时间: |
|
| 查看次数: |
7890 次 |
| 最近记录: |