我有一个包含大量图片的页面,最初隐藏在视图中,因为我正在使用选项卡式div(即使用CSS display隐藏一些div:none)。
因此,当页面加载时,加载所有图像需要很长时间,看起来页面很慢(因为浏览器上的加载栏不能完成10秒以上)。
我想要一种不加载图片的方法,直到它们在页面上可见。
我玩过jQuery LazyLoad但是这只会在滚动浏览器时加载图片(这对于标签式div不起作用)。
因此,有没有办法让LazyLoad像这样工作,或者有更好的方法吗?
谢谢!
答案 0 :(得分:0)
也许jQuery Tabs可以做你需要的,在标签上调用ajax ......
如何显示隐藏的div?
答案 1 :(得分:0)
一个攻击计划:
不是将图像URL放在img标记的src属性中,而是将其放在其他位置(例如,隐藏的跨度,上面有特定的类),并在显示div时,遍历所有img标记并设置src到它应该拥有的URL。
作为一种方法,它肯定会有一些缺点。
答案 2 :(得分:0)
我最近尝试过,不得不说js不再可能了。也许它从来没有...... 像lazyload这样的项目总是宣称它们会阻止所有图像在启动时加载,但你可以在firebug中看到这不起作用。在domready和开始滚动时,图像甚至被加载两次......
你唯一的选择是现场的ajax或做这样的事情:
<img src="transparent.gif" alt="" rel="real image source" />
然后在div显示时切换属性,因此图像开始加载。
至少如果你不需要谷歌索引它们,这也很好。
希望有所帮助! :)
编辑:嗯,为什么我得到一个-1,当时我只是给了答案?只需查看带有lazyload的页面并启用firebug,然后滚动页面即可。甚至在stackoverflow和lazyload插件的注释中都说这是目前唯一的解决方案...... :(
答案 3 :(得分:0)
如果您正在使用(或可以使用)HTML5文档类型,则可以使用“data-”前缀作为标记属性:
<img src="" data-src="/path/to/image" style="display: none" />
然后你可以使用Javascript用data-src填充src:
$(SELECTOR).attr("src", $(SELECTOR).attr("data-src"));
答案 4 :(得分:0)
如果您的唯一目标是“隐藏”由于大量图片而花费这么长时间的进度条,我会选择某种AJAX解决方案,因为这样进度条不会被“使用” 。它确实会增加您希望加载HTML元素的方式(以及可能的时候)。
我个人不喜欢将HTML属性用于其他目的以外的其他任何内容,因此将路径存储在另一个属性中并在需要时切换不是我的第一选择。相反,我会尝试创建一个JavaScript数组(id =&gt;路径)并在需要时更新单独的HTML IMG元素。
祝你好运! ;)答案 5 :(得分:0)