0

Как определить элемент видимости по площади 50% и более? visibility element by percentage JSПроверьте, отображается ли элемент в процентах после прокрутки?

JavaScript:

var i = setInterval(function() { 

var el = document.getElementById('test'); 
var rect = el.getBoundingClientRect(); 

if(
    rect.top >= 0 && 
    rect.left >= 0 && 
    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && 
    rect.right <= (window.innerWidth || document.documentElement.clientWidth) == true) { 
    var div = document.getElementById('log').innerHTML = 'Visible'; 
    //clearInterval(i); 
} 
    else { 
    var div = document.getElementById('log').innerHTML = 'No visible'; 
    } 

},1000); 

JSFIDDLE

+0

Итак, в чем вопрос? Очевидно, что ваш jsfiddle работает правильно как в Firefox, так и в Chrome. Сначала он говорит «Нет видимых», но если я прокручу окно, то он изменится на «Видимый». –

+0

Мне нужно как минимум 50% измеряемого элемента. – slaw

ответ

0

Я добавил 50% высоты элемента (rect.height/2) к условию. Теперь он обнаруживает, даже если элементы отображаются только на 50%.

var i = setInterval(function() { 

var el = document.getElementById('test'); 
var rect = el.getBoundingClientRect(); 
    console.log(window.innerHeight) 
    console.log(rect) 
if(
    rect.top >= 0 && 
    rect.left >= 0 && 
    rect.bottom <= (window.innerHeight+(rect.height/2) || document.documentElement.clientHeight+(rect.height/2)) && 
    rect.right <= (window.innerWidth || document.documentElement.clientWidth) == true) { 
    var div = document.getElementById('log').innerHTML = 'Visible'; 
    //clearInterval(i); 
} 
    else { 
    var div = document.getElementById('log').innerHTML = 'No visible'; 
    } 
},1000); 
+0

Спасибо. Но это неправильно. Посмотрите на фотографии, 50% -ный элемент области находится в поле зрения. Прокрутите направо, сверху/снизу - вместе. – slaw

Смежные вопросы