【问题标题】:Metro style & winJS: is there a way to know if an element is outside the screen?Metro style & winJS:有没有办法知道元素是否在屏幕之外?
【发布时间】:2012-06-20 09:43:59
【问题描述】:

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

【问题讨论】:

    标签: listview microsoft-metro winjs


    【解决方案1】:

    因为 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) );
    }
    

    【讨论】:

    • 谢谢,我已将其更改为适合水平视图而不是垂直视图: function isScrolledIntoView(elem) { var docViewLeft = $(window).scrollLeft(); var docViewRight = docViewLeft + $(window).width(); var elemLeft = $(elem).offset().left; var elemRight = elemLeft + $(elem).width(); return ((elemRight >= docViewLeft) && (elemLeft = docViewLeft)); } 干杯!
    • @Mike86 感谢代码更新!很高兴看到对您有用的东西!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    相关资源
    最近更新 更多