在滚动位置显示图像

Posted

技术标签:

【中文标题】在滚动位置显示图像【英文标题】:Show img on scroll position 【发布时间】:2014-02-23 11:35:29 【问题描述】:

我正在尝试实现与此处所述相同的效果: Show Div when scroll position 我什至使用相同的代码,只是试图淡入 img 而不是 div。该效果适用于第一张图像(滚动到视图中时淡入),但所有后续图像同时淡出,使它们在滚动时完全可见,而不是淡入视图。有没有人遇到过这个问题或者可以建议我做错了什么?

/* Every time the window is scrolled ... */
$(window).scroll( function()

/* Check the location of each desired element */
$('.hideme').each( function(i)

    var bottom_of_object = $(this).position().top + $(this).outerHeight();
    var bottom_of_window = $(window).scrollTop() + $(window).height();

    /* If the object is completely visible in the window, fade it in */
    if( bottom_of_window > bottom_of_object )

        $(this).animate('opacity':'1',500);

    

); 

);

如果需要我的其余代码,我可以包含它,但它与这段代码摘录的原始小提琴没有太大区别:http://jsfiddle.net/tcloninger/e5qaD/

我无法弄清楚为什么当我用图像替换文本时小提琴可以正常工作,但我的网站却没有。这是看似相同的代码,但有两种不同的结果。

这是我的实际网站,因此您可以看到它在做什么。文本应该一次淡入一个,而不是一次全部淡入。 http://trentguillory.com/testwebsite/index2.html

【问题讨论】:

【参考方案1】:

我对图像使用相同的代码没有任何问题。 我将div 标记换成了以下内容:<img class="hideme" src="http://placehold.it/350x150"/> See this fiddle. 你可以编辑这个小提琴并提供更多信息吗?

【讨论】:

到目前为止,这是我的网站。您可以看到所有图像同时褪色。 trentguillory.com/testwebsite/index2.html【参考方案2】:

您的代码与 JSFiddle 示例之间的区别在于 position().top 为您提供了元素相对于其父元素的位置。

由于 JSFiddles 没有将它们的文本封装在 DIV 中,它们的代码计算文本到 HTML 顶部的距离,这意味着滚动效果有效。

在您的代码中,图像元素与父元素之间的距离始终为 0,因此它们都同时显示。

代替

$(this).position().top

使用

$(this).offset().top

它给出了元素从整个页面顶部开始的位置。这会起作用。

【讨论】:

好吧,这解决了问题,但由于我缺乏声誉,我什至无法投票。

以上是关于在滚动位置显示图像的主要内容,如果未能解决你的问题,请参考以下文章

音频处理Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )

将图像从滚动视图拖动到视图而不会影响其位置

图像顶部的Android按钮不起作用

想要放大图片的位置

使用 DKImagePickerController 在滚动视图上显示多个图像

UITableView 在滚动或重新加载 tableviewcell 之前不显示远程图像