为了账号安全,请及时绑定邮箱和手机立即绑定

如果div有溢出元素,请使用jquery检查

如果div有溢出元素,请使用jquery检查

jeck猫 2019-07-31 17:51:08
如果div有溢出元素,请使用jquery检查我有一个固定高度的div overflow:hidden;我想用jQuery检查div是否有溢出超过div固定高度的元素。我怎样才能做到这一点?
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

实际上你不需要任何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}

见动作中的例子:小提琴

但是如果你想知道元素中的元素是否可见,那么你需要做更多的计算。在可见性方面,子元素有三种状态:

如果您想要计算半可见项目,那么它将是您需要的脚本:

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]);
    }}

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


查看完整回答
反对 回复 2019-07-31
?
潇湘沐

TA贡献1816条经验 获得超6个赞

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

这是我的答案:

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

此外,您还可以改变scrollWidthscrollHeight,如果你需要测试这两种情况下。


查看完整回答
反对 回复 2019-07-31
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

部分基于Mohsen的答案(增加的第一个条件涵盖了在父母之前隐藏孩子的情况):

jQuery.fn.isChildOverflowing = function (child) {
  var p = jQuery(this).get(0);
  var el = jQuery(child).get(0);
  return (el.offsetTop < p.offsetTop || el.offsetLeft < p.offsetLeft) ||
    (el.offsetTop + el.offsetHeight > p.offsetTop + p.offsetHeight || el.offsetLeft + el.offsetWidth > p.offsetLeft + p.offsetWidth);};

然后就做:

jQuery('#parent').isChildOverflowing('#child');


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 609 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信