Здравствуйте, как определить что элемент в зоне видимости окна браузера. Допустим есть элемент и если пользователь видит его, то отметь элемент как просмотренный. Не знаю как опередить что элемент в зоне видимости.. Подскажите как можно опеределить
var element = document.querySelector('span');
var sees = function(e) {
// Получаем позиции элемента
e.position = {
top: window.pageYOffset + e.getBoundingClientRect().top,
left: window.pageXOffset + e.getBoundingClientRect().left,
right: window.pageXOffset + e.getBoundingClientRect().right,
bottom: window.pageYOffset + e.getBoundingClientRect().bottom
};
// Получаем позиции окна
window.position = {
top: window.pageYOffset,
left: window.pageXOffset,
right: window.pageXOffset + document.documentElement.clientWidth,
bottom: window.pageYOffset + document.documentElement.clientHeight
};
if(e.position.bottom > window.position.top && // Если позиция нижней части элемента больше позиции верхней чайти окна
e.position.top < window.position.bottom && // Если позиция верхней части элемента меньше позиции нижней чайти окна
e.position.right > window.position.left && // Если позиция правой стороны элемента больше позиции левой части окна
e.position.left < window.position.right){ // Если позиция левой стороны элемента меньше позиции правой чайти окна
console.clear();
console.log('Вы видите SPAN :-)');
}else{
console.clear();
};
};
window.onscroll = function() {
sees(element);
};
sees(element);
body {
height: 6000px;
}
span {
display: block;
margin-top: 3000px;
}
<span>Элемент</span>
вот еще вариант, только не забудьте подключить библиотеку jQuery
<script type="text/javascript">
$(document).ready(function(){
$(document).scroll(function(){
// проверяем
checkPosition();
});
// после загрузки страницы сразу проверяем
checkPosition();
// проверка при ресайзе страницы
$(window).resize(function(){
checkPosition();
});
});
// функция проверки полной видимости элемента
function checkPosition(){
// координаты дива
var div_position = $('.btinew').offset();
// отступ сверху
var div_top = div_position.top;
// отступ слева
var div_left = div_position.left;
// ширина
var div_width = $('.btinew').width();
// высота
var div_height = $('.btinew').height();
// проскроллено сверху
var top_scroll = $(document).scrollTop();
// проскроллено слева
var left_scroll = $(document).scrollLeft();
// ширина видимой страницы
var screen_width = $(window).width();
// высота видимой страницы
var screen_height = $(window).height();
// координаты углов видимой области
var see_x1 = left_scroll;
var see_x2 = screen_width + left_scroll;
var see_y1 = top_scroll;
var see_y2 = screen_height + top_scroll;
// координаты углов искомого элемента
var div_x1 = div_left;
var div_x2 = div_left + div_height;
var div_y1 = div_top;
var div_y2 = div_top + div_width;
// проверка - виден див полностью или нет
if( div_x1 >= see_x1 && div_x2 <= see_x2 && div_y1 >= see_y1 && div_y2 <= see_y2 ){
$.ajax({
type: "POST",
url: "functions/view_response.php",
dataType: "html",
cache: false,
});
}
}
</script>
<div class="btinew"></div>
Этот пример нашел на сайте http://vk-book.ru/proverit-vidimost-elementa-s-pomoshhyu-jquery/
Сборка персонального компьютера от Artline: умный выбор для современных пользователей