懒加载水平滚动的jQuery

3

所以,我正在为一个客户制作摄影作品集网站,她非常希望她的照片在浏览器窗口中出现时能够淡入。因此,我进行了一些研究,似乎jquery插件lazyload非常完美。问题是,她还非常希望她的照片能够水平滚动,而lazyload似乎只适用于垂直滚动的网页。我搜索了一下,发现lazyload应该可以在侧向滚动的div中工作,使用以下脚本:

 $("img").lazyload({
     container: $("#container")
 });

但似乎什么也没发生。

目前我的代码如下:

<head>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/jquery.lazyload.min.js"></script>
<script>
$(function() {          
$("#content img.fadeload").lazyload({
    container: $("#content"),
    placeholder : "images/white.jpg",
    effect      : "fadeIn",
    effectspeed: 1000 
});
});
</script>
<style>
#content {
font-size: 100%;
position: absolute;
height: 574px;
width: 750px;
margin-top: -277px;
margin-bottom: 0px;
padding-left: 240px;
padding-top: 0px;
padding-bottom: 0px;
top: 50%;
overflow-x: scroll;
white-space: nowrap;
}
</style>
</head>
<body>
<div id="content">
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo01.jpg" alt="photo01"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo02.jpg" alt="photo02"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo03.jpg" alt="photo03"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo04.jpg" alt="photo04"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo05.jpg" alt="photo05"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo06.jpg" alt="photo06"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo07.jpg" alt="photo07"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo08.jpg" alt="photo08"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo09.jpg" alt="photo09"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo10.jpg" alt="photo10"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo11.jpg" alt="photo11"/>
    <img class="fadeload" src="images/white.jpg" data-original="images/liveStuffHotStuff/photo12.jpg" alt="photo12"/>
</div>
</body>

这里有一个临时链接,如果你想看到 lazyload 插件在当前状态下的功能(或缺乏功能),请点击链接。
如果您对让lazyload按照您的意愿运行或者推荐其他图像淡入效果方法有任何建议,都非常感谢。非常感谢!

也许这会对你有所帮助... http://stackoverflow.com/questions/444730/javascript-lazy-load-images-in-horizontal-div - Kingk
哦,是的,我本来想添加一句话,我确实看到了那个stackoverflow的条目,但对我没有用。这个和这个:http://www.appelsiini.net/projects/lazyload/enabled_wide_container.html 是我能找到的关于让lazyload水平工作的唯二资源,但它们似乎都没有改变任何东西。 - RasterEyes
你是说宽容器演示页面对你不起作用?使用的浏览器是什么? - Mika Tuupola
演示在Firefox中可以工作,但在Chrome中无法工作,我还没有测试其他浏览器。但据我所知,演示代码在Chrome和Firefox中都不能正常应用于我正在尝试放置它的网站上。另外,顺便说一下,我宁愿包含图像的div没有宽度属性,而是将滚动条放在浏览器底部而不是div底部,就像这样:http://thefuhrl.com/jennaSpitz2/album01.html - RasterEyes
哪个版本的Chrome?我在最新的Windows和OSX Chrome上都没有问题。具体是什么不起作用? - Mika Tuupola
1个回答

0

你的图像缺少宽度和高度属性。没有它们,延迟加载功能将无法正常工作。如果浏览器不知道图像的宽度和高度,则在“document.ready”事件触发时,它无法确定图像应该在布局中的位置。正确的图像标签如下所示:

<img class="lazy" src="img/grey.gif" data-original="img/example.jpg"  width="640" heigh="480">

只需删除容器参数。与演示页面相同的方式:http://www.appelsiini.net/projects/lazyload/enabled_wide.html如果答案解决了问题,请将其标记为已接受。 - Mika Tuupola
添加高度和宽度属性到图像中已经生效了!现在,如果我想要做"overflow:hidden;"并省略div的宽度属性,以便水平滚动条在浏览器窗口中出现,是否有方法使得lazyload在这种情况下也能工作?比如说不是添加脚本({container:$(“#content”),}),而是类似于({container:$(“body”)})。下面是我所说的情况的一个示例:thefuhrl.com/jennaSpitz2/album01.html - RasterEyes
啊,我从没遇到“宽”演示页面。非常感谢!你真棒! - RasterEyes
它在电脑上运行得很好,但在Firefox上有点卡顿。但在移动设备上,它非常卡顿。有没有一种简单的方法来优化移动设备的懒加载?如果没有,是否有一种方法可以在iOS、Android或其他移动操作系统访问时关闭懒加载?这是当前使用懒加载的网站版本,在移动设备上遇到了问题:http://thefuhrl.com/jennaSpitz/album01.html - RasterEyes
在浏览器加载图像后开始淡入。你的移动连接很可能比桌面连接慢。 - Mika Tuupola
是的,我认为那可能就是情况。您建议如何最好地关闭移动设备的延迟加载?我在这里发布了一个新的堆栈溢出问题:http://stackoverflow.com/questions/14914900/disable-lazy-load-for-mobile-devices - RasterEyes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接