Как показать div
Вложений: 1
Всем привет.
Есть три элемента div на странице. Задача, загружать контент в элемент, когда он полностью появился на странице. Сами элементы статичные div с рамкой. (на картинке окно черное. второй div красный еще не полностью в окне) Понимаю что надо как то получить координаты элемента, и когда он будет в области видимости полностью, произвести событие. Но как определить в окне он или нет, разобраться не могу. Спасибо. |
Цитата:
function checkViewport(el) {
var H = document.documentElement.clientHeight,
pos = el.getBoundingClientRect();
return pos.top > 0 && pos.bottom < H
}
|
checkViewport($('.bz'));
подскажите, правильно ли я вызываю функцию передавая ей div элемент? и еще вопрос - когда нужно вызывать данную функцию? если ее вызывать в $(window).scroll то получается при каждом скролле будет вызываться функция. |
Зосимов,
checkViewport($('.bz')[0]);
Цитата:
|
Цитата:
может есть еще способ выполнить функцию один раз? |
Цитата:
Цитата:
|
Зосимов,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.bz{
height: 300px;
width: 100px;
font-size: 22px;
line-height: 44px;
color: #FFFFFF;
background-color: #8B4513;
text-align: center;
margin-top: 30px;
}
p{
height: 2000px;
}
.worked {
background-color: #FF00FF;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
function checkViewport(el) {
var H = document.documentElement.clientHeight,
pos = el.getBoundingClientRect();
return pos.top > 0 && pos.bottom < H
}
$(window).scroll(function() {
$('.bz:not(.worked)').each(function(indx, el) {
var visibility = checkViewport(el);
if(visibility) {$(el).addClass('worked');
// load data
}
})
})
});
</script>
</head>
<body>
<p></p>
<div class="bz" >0</div>
<div class="bz" >0</div>
<div class="bz" >0</div>
<p></p>
</body>
</html>
|
рони, спасибо !
сделал в общем так -
if (!$('#bzh').hasClass('sel')) {
console.log("good");
$( ".bz" ).addClass("sel");
}
вроде срабатывает только один раз. |
| Часовой пояс GMT +3, время: 15:10. |