2015-10-16 2 views
1

в оболочке ореха, я пытаюсь написать отслеживание прокрутки. Тем не менее, я не думаю, что моя математика подходит для вычисления 50% -ного смещения элемента html (section).Получите 50% позицию элемента HTML

Может ли кто-нибудь взглянуть на это и сказать мне, если это неправильно или правильно, или может быть лучший способ вычисления 50% -ной отметки/смещения.

// add the section elements into an array 
var sections = $('section'); 


// define variables and arrays 
var currentOffset = 0, 
    lastScrollTop = 0, 
    i = 0, 
    offsets = [], 
    sectionHeights = []; 

// loop through sections and get 50% of height and add it to the .offset().top 
for (i = 0; i < sections.length; i++) { 
    sectionHeights.push($(sections[i]).height()/2); 
    offsets.push($(sections[i]).offset().top + sectionHeights[i]); 
} 

ответ

2

Ваша математика правильная. Единственным, что вы можете сделать, это упростить код немного с помощью функции JQuery .each:

var currentOffset = 0, 
    lastScrollTop = 0, 
    i = 0, 
    offsets = []; 

$('section').each(function(){ 
    offsets.push($(this).offset().top + $(this).height()/2); 
}); 

Учтите, что если у вас есть динамическая страница и положение разделов или размеры модифицируются на стороне клиента, вы должны пересчитайте позиции прокрутки.

Working fiddle

Смежные вопросы