이것은 내가 생각해 낸 것입니다. 나는 scrollTop 값을 캐싱함으로써 개선 될 수 있다고 생각하지만, 이것은 꽤 좋다. 박스 텀을 캐싱하기위한 프레임 워크를 포함했지만 구현 코드는 포함하지 않았습니다. div 만 숨기려면 스크롤을 구현해야합니다. 나는 너를 운동으로 상향 스크롤에 reshowing 그들을 떠났다.
창이 스크롤되면 마지막으로 숨겨진 div가 표시됩니다. 이 div 앞에 숨겨져있는 모든 것을 이미 알고 있습니다. 그런 다음 '다음 요소가 화면을 벗어나는 동안'을 사용하여 숨 깁니다. div가 화면에서 벗어나 자마자 우리는 중단합니다. 따라서 전체 목록을 반복하여 시간을 절약 할 수 있습니다.
http://jsfiddle.net/kkv3h/2/
//track whether user has scrolled up or down
var prevScrollTop = $(document).scrollTop();
$(document).scroll(function() {
var currentScrollTop = $(this).scrollTop();
if (currentScrollTop > prevScrollTop) {
//down
var lasthiddenbox = $('.fadeboxhidden:last');
var nextbox = (lasthiddenbox.length > 0) ? lasthiddenbox.next('.fadebox') : $('.fadebox:first');
while (nextbox.length) {
console.log('box: ' + nextbox.offset().top + ' scroll: ' + currentScrollTop);
if (nextbox.offset().top < currentScrollTop) {
nextbox.animate({ opacity: 0 }, 3000).addClass('fadeboxhidden');
}
else { return; }
nextbox = nextbox.next('.fadebox:first');
}
} else {
//up
}
prevScrollTop = currentScrollTop ;
});
//create an object to hold a list of box top locations
var boxtops = new Object;
//gather all boxes and store their top location
$('.fadebox').each(function(index) {
//you may want to dynamically generate div ids here based on index. I didn't do this
//because i was already using the id for positioning.
var divid = $(this).prop('id');
boxtops[divid] = $(this).offset().top;
//console.log(boxtops[divid]);
});
당신이 취할 수있는 가장 최적 인 일을 알고 여러 가지 방법이 있습니다 : 스크립트는 (당신이 검색하고자하는 모든 요소의 신원을 알 수 즉 그것은 고정 된 #입니다. 집단)? – mattacular
내 질문에 업데이트를 참조하십시오. –
이것이 낡은 질문이지만 왜 배경색에서 0 % 불투명도로 이동하는 그라디언트 인 CSS 요소가 Z- 인덱스 99999 또는 그와 비슷한 화면 상단에 고정되어 있지 않은지 알고 싶습니다. 여분의 j 또는 아무것도로드하지 않아도됩니다. 그냥 생각. – Jacques