2014-10-27 169 views
-2

有沒有辦法通過使用jQuery來確定某個元素當前是否在用戶的屏幕/視口上可見? (不使用其他外部庫)確定元素是否在屏幕上

+2

這已經回答了很多很多次之前。你問它,然後在一分鐘內回答。爲什麼? – 2014-10-27 15:36:59

+0

@DeeMac我正在尋找這樣的問題,並沒有找到解決方案。我已經發布了這個問題馬上回答。 (回答你自己的問題功能) – Dropout 2014-10-27 15:38:13

+0

可能重複[檢查元素是否可見後滾動](http://stackoverflow.com/questions/487073/check-if-element-is-visible-after-scrolling) – MaxiWheat 2014-10-27 16:01:23

回答

0

不能直接使用默認jQuery的,但你可以實現自己的功能,你可以用它之後一個jQuery的元素:

(function ($) { 
    $.fn.isOnScreen = function() { 
     var topView = $(window).scrollTop(); 
     var botView = topView + $(window).height(); 
     var topElement = this.offset().top; 
     var botElement = topElement + this.height(); 
     return ((botElement <= botView) && (topElement >= topView)); 
    } 
})(jQuery); 

添加此代碼後,你可以調用$('#yourElementId').isOnScreen()如果整個元素在屏幕上將返回true,如果不是,則返回false

您也可以玩弄它一下,所以它會返回true如果至少元件的四分之一是在屏幕上可見,例如像這樣:

(function ($) { 
    $.fn.isOnScreen = function() { 
     var topView = $(window).scrollTop(); 
     var botView = topView + $(window).height(); 
     var topElement = this.offset().top; 
     var botElement = topElement + (this.height()/4); //<--- 
     return ((botElement <= botView) && (topElement >= topView)); 
    } 
})(jQuery); 
+0

不錯一個......但是如果元素本身在屏幕上,但是在具有溢出的周圍div容器之外,你會怎麼做:hidden? – errand 2014-10-27 15:34:41

+0

你的意思是如果父母被隱藏? @errand – Dropout 2014-10-27 15:36:12

+0

不,父母是可見的。像這樣:父div是100x100px,溢出隱藏,它包含5個大小相同的圖像 - 只有第一個可見,你必須滾動才能看到另一個。但你的視口是2000x1000px - 所以在技術上它是在屏幕上 - 但它是由於溢出隱形... – errand 2014-10-27 15:38:51