javascript - 如何检查元素是否在溢出区域?

标签 javascript prototypejs

我有一个 300px 的 div。 此 DIV 包含不同的图标,如果图标太多,则由于 overflow:hidden 而它们不可见 我如何以编程方式检查图标是否可见或位于溢出区域?

最佳答案

我找不到完全类似的东西,所以我编写了一个快速库函数。

Element.addMethods({
    isClipped: function(element, recursive){
        element = $(element);
        var parent = element.up();
        if ((element === document.body) || !parent) return true;
        var eLeft = element.offsetLeft,
            eRight = eLeft+element.getWidth(),
            eTop = element.offsetTop,
            eBottom = eTop+element.getHeight();
        var pWidth = $R(parent.scrollLeft, parent.getWidth()+parent.scrollLeft),
            pHeight = $R(parent.scrollTop, parent.getHeight()+parent.scrollTop);
        if (!pWidth.include(eLeft) || !pWidth.include(eRight) || !pHeight.include(eTop) || !pHeight.include(eBottom)) {
            return true;
        }

        if (recursive) return parent.isClipped(true);
        return false;
    }
});

它并不优雅(我确实说过“快速”),但它允许您在任何元素上使用 isClipped() 。可以看到jsfiddle测试here 。它测试元素的任何部分(不包括边框)是否是溢出的一部分。您可以执行类似的操作来测试完全位于包含客户区域之外的元素。

关于javascript - 如何检查元素是否在溢出区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7516905/

相关文章:

javascript - 从指令模板内访问 Angular 的 rootScope

javascript - 不使用 jQuery 的双范围 slider

javascript - 如何模拟/测试 AJAX 异常处理程序?

javascript - Underscore.js 为什么要定义函数别名

javascript - 在 jQuery 单击函数上渲染 Rails 部分

javascript - 使用移动设备拖动在 Canvas 上呈现的图像会导致图像消失

javascript - 当用户按下 ENTER 时使用react

javascript - Prototype 中的 setStyle 似乎没有按预期运行?

javascript - 原型(prototype) 1.6.0.3 - "Insert is not a function"

javascript - .simulate ("click") 无法在 Google Chrome 中使用 Clearbox JS