ウィンドウの高さとウィンドウの scrollTop() は、ユーザー ビューに存在するオフセットの範囲を示します。
var minHeight = $(window).scrollTop()
var maxHeight = $(window).height()
var middleHeight = (maxHeight + minHeight) / 2;
次のようなビューポート セレクターを使用してみて
ください。 http://www.appelsiini.net/projects/viewport
これにより、すべての可視要素が得られます。プラグインは必要ありませんが、選択が容易になります
var visibleElements = $("div.box").filter(":in-viewport")
この選択から、middleHeight に最も近い要素を探すことができます。
var $midElement;
var distance = null;
var currDistance = 0;
visibleElements.each(function(index, element) {
currDistance = Math.abs(middleHeight - $midElement.offset().top);
if ( distance == null || currDistance < distance ) {
$midElement = $(element);
distance = currDistance;
}
});
これをテストしていませんが、正しい軌道に沿っているはずです。