滚动事件:不同分辨率上的相同行为

时间:2015-05-09 22:48:58

标签: jquery css cross-browser screen-resolution

当用户滚动X像素时,我有一个触发某些事件的网页(特别是淡入/淡出某些元素)。

一切都可以在1920x1080p分辨率下工作,或者像风景分辨率一样(例如iPhone 5上的风景很好)。问题在于更高的分辨率或垂直分辨率,因为内容已经可用而无需滚动,因此不会触发事件。

如何在所有分辨率下保持一致的行为? 有没有办法让我不使用媒体查询?

以下是滚动时以1920x1080p触发事件的视频: https://www.youtube.com/watch?v=Mtuy1E5JPew

这是网页的 link

以下是根据用户滚动的数量淡入/淡出元素的脚本示例:

var $window = $(window);
var $logopiano = $('#logopiano');

function showHideLogo() {
   if( $window.scrollTop() > 910 ) {
        $logopiano.fadeIn("slow", function() {
        });
   } else {
        $logopiano.fadeOut("slow", function() {
        });
   }
}

showHideLogo();
$window.scroll(showHideLogo);

1 个答案:

答案 0 :(得分:1)

只需在开头触发滚动处理程序。 (在绑定滚动处理程序后立即

$window.scroll(showHideLogo).trigger('scroll');

更新,第二个想法,因为你测试滚动位置而不是你想要的元素,这将不起作用。

尝试检查您是否到达底部

function showHideLogo() {
   var availableScroll = $(document).height() - $window.height(),
       scrollTop = $window.scrollTop();

   if( scrollTop > 910 || scrollTop  == availableScroll) {
        $logopiano.fadeIn("slow", function() {
        });
   } else {
        $logopiano.fadeOut("slow", function() {
        });
   }
}

但你必须手动确保元素对齐,因为我看到你想把它放在一个特定的地方