Я не уверен, есть ли способ определить, находится ли окно над элементом или окно свернуто (хотя я думаю, что вы можете сделать последнее, подключив что-то к размытию окна? Точно сказать не могу...). Во всяком случае, что касается прокрутки, эта часть вопроса была задана несколько раз прежде, , и это быстрое демо , которое я придумал, чтобы показать, как это сделать. В примере что-то происходит, когда элемент прокручивается в поле зрения, но логика, конечно, та же. Во всяком случае, код:
$(document).ready(function() {
function isScrolledIntoView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}
var myelement = $('#formcontainer');
var mymessage = $('#mymessage');
$(window).scroll(function() {
if(isScrolledIntoView(myelement)) {
mymessage.hide();
} else {
mymessage.show();
}
});
});
В этом нет особого jQuery, так что вы можете взять это:
window.addEventListener('load', function() {
function isScrolledIntoView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}
var el = document.getElementById('myelement');
window.addEventListener('scroll', function() {
if(isScrolledIntoView(el)) {
// do something when element is scrolled into view
} else {
// do something when it is not in view
}
}, false);
}, false);