使用 jquery 检查 div 是否具有溢出元素

2022-08-30 04:28:35

我有一个固定高度的div和overflow:hidden;

我想用jQuery检查div是否有溢出超过div固定高度的元素。我该怎么做?


答案 1

实际上,您不需要任何 jQuery 来检查是否存在溢出。使用 element.offsetHeightelement.offsetWidthelement.scrollHeightelement.scrollWidth,您可以确定元素的内容是否大于其大小:

if (element.offsetHeight < element.scrollHeight ||
    element.offsetWidth < element.scrollWidth) {
    // your element have overflow
} else {
    // your element doesn't have overflow
}

查看操作示例:小提琴

但是,如果您想知道元素中的哪个元素是否可见,则需要进行更多计算。在可见性方面,子元素有三种状态:

enter image description here

如果要计算半可见项,则需要脚本:

var invisibleItems = [];
for(var i=0; i<element.childElementCount; i++){
  if (element.children[i].offsetTop + element.children[i].offsetHeight >
      element.offsetTop + element.offsetHeight ||
      element.children[i].offsetLeft + element.children[i].offsetWidth >
      element.offsetLeft + element.offsetWidth ){

        invisibleItems.push(element.children[i]);
    }

}

如果你不想计算半可见的,你可以用一点点的差异来计算。


答案 2

我有和OP相同的问题,这些答案都不符合我的需求。我需要一个简单的条件,一个简单的需求。

这是我的答案:

if ($("#myoverflowingelement").prop('scrollWidth') > $("#myoverflowingelement").width() ) {
  alert("this element is overflowing !!");
}
else {
 alert("this element is not overflowing!!");
}

此外,如果需要测试任一情况,则可以进行更改。scrollWidthscrollHeight