Здравствуйте, как определить что элемент в зоне видимости окна браузера. Допустим есть элемент и если пользователь видит его, то отметь элемент как просмотренный. Не знаю как опередить что элемент в зоне видимости.. Подскажите как можно опеределить
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/
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день уважаемыеПосоветуйте пожалуйста, как можно оптимизировать css файлы, для увеличения скорости загрузки страници? (кроме компрессии)...
Как можно реализовать бесконечную прокрутку на странице, на которой динамически добавляются данные? Например, при загрузке страницы отправляется...
Почему не работает jQuery? Должна срабатывать плавная прокрутка вверх при нажатии на кнопку, и кнопка должна быть изначально спрятана, но ничего...
Использую не фантом как в тегах, а слимер, тк