地铁风格& winJS:有没有办法知道一个元素是否在屏幕之外?

时间:2012-06-20 09:44:00

标签: listview microsoft-metro winjs

在水平listView中 - 是否可以知道某个片段是否在屏幕“外”?

1 个答案:

答案 0 :(得分:3)

由于WinJS基本上是在IE 10中运行,因此您可以像处理常规Web问题那样处理此问题。其中一部分来自Check if element is visible after scrolling

使用JQuery,您可以:

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom)
      && (elemBottom <= docViewBottom) &&  (elemTop >= docViewTop) );
}

您也可以在纯粹的“WinJS”(Internet Explorer 10 + JavaScript)中执行此操作,它看起来像:

function isScrolledIntoView(elem)
{
    var docViewTop = window.pageXOffset;
    var docViewBottom = docViewTop + window.innerHeight;

    var elemTop = =  document.getElementById(elem).offsetTop
    var elemBottom = elemTop + =  document.getElementById(elem).offsetHeight

    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom)
      && (elemBottom <= docViewBottom) &&  (elemTop >= docViewTop) );
}