我在这里举了一个例子:http://jsfiddle.net/jewb/tM5h7/4/
我的脚本看起来像这样:
var minHeight = $(window).scrollTop();
var maxHeight = $(window).height();
var middleHeight = (maxHeight + minHeight) / 2;
$(window).scroll(function () {
var positionTopDiapo = $('#diaporama').offset().top;
var hauteurDivDiapo = $('#diaporama').height()/2;
var positionTop = $('#frame').offset().top;
var hauteurDiv = $('#frame').height()/2;
var positionY = positionTop + hauteurDiv - $(window).scrollTop();
var positionYDiapo = positionTopDiapo + hauteurDiv - $(window).scrollTop();
var bottomDiapo = (positionTopDiapo - $(window).scrollTop()+ $('#diaporama').height());
var bottomFrame = (positionTop - $(window).scrollTop()+$('#frame').height());
var window_width = $(window).width() - $('#frame').width();
var document_height = $('#diaporama').height() - $('window').height();
var scroll_position = $(window).scrollTop();
var object_position_left = window_width * (scroll_position / document_height);
$('#frame').css({'left': object_position_left });
if(positionYDiapo<=middleHeight){
$('#frame').css({position:'fixed', top: positionTop - $(window).scrollTop(), bottom:'auto'});
if(bottomDiapo<=bottomFrame){
$('#frame').css({ 'position': 'absolute' });
$('#frame').css({ 'bottom': '0px' });
$('#frame').css({ 'top': 'auto' });
}
} else{
$('#frame').css({position:'absolute', top:'0px', bottom:'auto'});
$('#frame').css({ 'left': '0px' });
}
这是问题所在。首先,#frame
有一个位置absolute, top:0px;
当#diaporama
到达窗口中间时,我需要修正#frame
的位置。当#frame
修复后,我需要它从左向右滚动。我需要在#frame
的底部到达页面中间的同时到达#diaporama
的末尾。当它到达终点时,#frame
将具有绝对位置bottom:0px;
然后,我继续滚动直到文档的结尾。如果我向上滚动,它会反过来。
答案 0 :(得分:1)
这是我到目前为止所做的:jsfiddle
var scroll_position = $(window).scrollTop(),
d = $('#diaporama').get(0).scrollHeight,
c = $('#diaporama').get(0).scrollWidth,
scrollPercent = (scroll_position / (d+c));
var position = (scrollPercent * - $('#frame').width())+positionTopDiapo;
var positionGauche = $('#frame').offset().left;
var tarif = $('#tarif').offset().top - $(window).scrollTop();
当我给左侧位置时有一些小故障,但总的来说它非常棒。如果有人可以改进代码,请告诉我。我把这段代码用来帮助其他有同样问题的人。对于那些遇到同样问题的人来说,这可能是一个开始。