Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在网页中高效加载隐藏/分层图像_Javascript_Image_Html_Layer - Fatal编程技术网

Javascript 在网页中高效加载隐藏/分层图像

Javascript 在网页中高效加载隐藏/分层图像,javascript,image,html,layer,Javascript,Image,Html,Layer,我有一个分层div组件,它通过滑动顶部图像的动画来显示一系列连续的大kb图像,以显示下面的下一个图像。我正试图了解如何最好地处理这个问题 方法1: 将多个div层叠在一起,每个div都有一个指定为背景的图像,并根据需要滑离div 隐藏的div将在页面加载时加载其图像,还是仅当它们被显示时才加载?这是特定于浏览器/客户端的行为吗?是否所有图像(JPEG、PNG)在这方面的表现都相同 方法2: 只使用两个div-一个用于处理滑动,另一个用于加载并显示下一个图像 在这种情况下,是否可以预加载下一个图像

我有一个分层div组件,它通过滑动顶部图像的动画来显示一系列连续的大kb图像,以显示下面的下一个图像。我正试图了解如何最好地处理这个问题

方法1:

将多个div层叠在一起,每个div都有一个指定为背景的图像,并根据需要滑离div

隐藏的div将在页面加载时加载其图像,还是仅当它们被显示时才加载?这是特定于浏览器/客户端的行为吗?是否所有图像(JPEG、PNG)在这方面的表现都相同

方法2:

只使用两个div-一个用于处理滑动,另一个用于加载并显示下一个图像

在这种情况下,是否可以预加载下一个图像,以便在显示下一个图像时javascript不会减慢速度


谢谢-如果有人有其他想法,我很乐意听听。

您的第一种方法,即使图像通过CSS“隐藏”,也会通过HTTP请求加载所有浏览器的所有图像。您的第二种方法或其变体可能更好

我建议您在运行时使用AJAX下拉每个图像。当然可以预加载图像

您可能想考虑现有的幻灯片/灯箱类型的JQuery或JavaScript插件。这已经做了很多次了,你会有点像是在重新创造轮子(除非它更像是一种学习经验的东西)

下面是一个有趣的示例,它使用回调预加载,以便在准备就绪时提醒您。也许是一个好的适应


您的第一种方法,即使图像通过CSS“隐藏”,也会通过HTTP请求加载所有浏览器的所有图像。您的第二种方法或其变体可能更好

我建议您在运行时使用AJAX下拉每个图像。当然可以预加载图像

您可能想考虑现有的幻灯片/灯箱类型的JQuery或JavaScript插件。这已经做了很多次了,你会有点像是在重新创造轮子(除非它更像是一种学习经验的东西)

下面是一个有趣的示例,它使用回调预加载,以便在准备就绪时提醒您。也许是一个好的适应


第一种方法当然会退化得更好。如果在CSS浏览器上查看,它将使图像可用且可见。但这样做的代价是必须从一开始就把所有的图像都拉下来。第二种方法在初始命中率上更轻,代价是增加了代码复杂度,以交换图像

您完全可以使用Javascript预加载图像。只需创建一个图像对象并将其源设置为任何您想要的,这将自动触发图像下载。这样做不必将其插入DOM或对用户可见


隐藏的div应该自动加载其内容,无论它们是否可见。我想不出任何一款基于PC的浏览器不会这样做,但我想冒险猜测,一些用于资源有限设备(比如手机)的浏览器可能会优化内容,并延迟加载内容,直到容器变得可见,以节省网络流量。

第一种方法的性能肯定会更好。如果在CSS浏览器上查看,它将使图像可用且可见。但这样做的代价是必须从一开始就把所有的图像都拉下来。第二种方法在初始命中率上更轻,代价是增加了代码复杂度,以交换图像

您完全可以使用Javascript预加载图像。只需创建一个图像对象并将其源设置为任何您想要的,这将自动触发图像下载。这样做不必将其插入DOM或对用户可见


隐藏的div应该自动加载其内容,无论它们是否可见。我想不出任何一款基于PC的浏览器不会这么做,但我猜一些用于资源有限的设备(比如手机)的浏览器可能会优化内容并延迟加载内容,直到容器可见,以节省网络流量。

@Marc B:我意识到了这一点。我的观点是,如果这个人只是在观看一些幻灯片,那么随着幻灯片的进行,AJAX只能用于下载这些图像(只加载幻灯片中的下一个图像)。如果一个人观看了10幅图像中的2幅,但所有10幅图像都是预先加载的,那么这是低效的。如果只加载了3个(2个加上“下一个”),则效率更高。请使用此选项,不要重新发明轮子、灯箱或变体。这就是答案。@KP:谢谢链接。带回调的Ajax似乎能让我达到目的。@Ryley:我们使用简化的示例来演示这方面的内容-即使我的问题可以通过cookie cutter组件解决,我也可以询问。抱歉@Yarin,一定是有人让我调试可怕的VB代码来重新实现Date对象或其他东西。。。我通常心情好多了:)@Marc B:我意识到了。我的观点是,如果这个人只是在观看一些幻灯片,那么随着幻灯片的进行,AJAX只能用于下载这些图像(只加载幻灯片中的下一个图像)。如果一个人观看了10幅图像中的2幅,但所有10幅图像都是预先加载的,那么这是低效的。如果只加载了3个(2个加上“下一个”),则效率更高。请使用此选项,不要重新发明轮子、灯箱或变体。这就是答案。@KP:谢谢链接。带回调的Ajax似乎能让我达到目的。@Ryley:我们使用简化的示例来演示这方面的内容-即使我的问题可以通过cookie cutter组件解决,我也可以询问。抱歉@Yarin,一定是有人让我调试可怕的VB代码来重新实现Date对象或其他东西。。。我的心情通常好得多:)我对这个答案没有问题,假装这是对KP的回答投了反对票……我没有赞成票