检查元素是否完全可见

时间:2013-12-13 19:44:07

标签: javascript jquery

我知道jQuery中的:visible,但是当元素的一部分不可见时,它会返回true,例如当child大于其父元素时。

enter image description here

2 个答案:

答案 0 :(得分:1)

这样的东西应该根据完全可见的防御来做到这一点 - 注意我还没有测试过这个...关于可见的定义,因为没有隐藏而没有溢出滚动父级

var isCompletelyVisible = function($ele) {
   $ele = $($ele);
   var smaller = true;
   $ele.each(function() {
      var par = this.parentElement;
      if(par.offsetWidth < this.scrollWidth ||
             par.offsetHeight < this.scrollHeight) {//larger than parent element
        return (smaller = false);
      }
   }); 
   return smaller && $ele.is(":visible");
}

可选择添加到jQuery原型:

$.fn.isCompletelyVisible = isCompletelyVisible;

或者选择器$(":fullvisible")(已更正)

$.expr.filters.fullvisible = isCompletelyVisible;

答案 1 :(得分:0)

如果你想检查整个元素是否可见,我能想到的唯一方法是进行计算。

检查c.x&gt; = p.x 并且(c.x + c.width)&lt; =(p.x + p.width) 等。

如果这适用于手机游戏,这可能是一个非常重要的计算方式。

请注意,如果我问为什么比父母更大是一个问题?