В настоящее время я использую метод getBoundingClientRect(), если элемент входит в область просмотра. То, что мне действительно нужно сделать, это проверить, попал ли 50% (или любой процент) элемента в окно просмотра (я проверяю прокрутку). Если это видно, я обновляю текст на странице, чтобы сказать «да», если это не так, текст говорит «нет».Как вычислить, если 50% элемента находится в видовом экране?
Кажется, я не могу понять свою логику и ее начало сводить меня с ума, может ли кто-нибудь помочь?
Текущий код ниже!
isBannerInView: function (el, y) {
var _this = this,
elemTop,
elemBottom,
elemHeight,
isVisible;
for (var i = 0; i < el.length; i++) {
var pos = banners.indexOf(el[i]);
elemTop = el[i].getBoundingClientRect().top;
elemBottom = el[i].getBoundingClientRect().bottom;
elemHeight = el[i].getBoundingClientRect().height;
isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight);
_this.updateResults(el[i], pos, isVisible);
};
},
updateResults: function (el, pos, isVisible) {
var isInView = isVisible ? 'Yes' : 'No';
document.querySelectorAll('.results')[0].getElementsByTagName('span')[pos].innerHTML = isInView;
},
С какими особенностями вы столкнулись? Не похоже, что вы сделали что-либо, чтобы попытаться вычислить количество элемента на экране. – zzzzBov
это очень похоже на http://stackoverflow.com/questions/487073/check-if-element-is-visible-after-scrolling?rq=1 – tylerlindell