我正在处理的页面上的页脚(或其中的一部分)是可折叠的。我还为这个元素的折叠和展开设置动画。页脚不是固定的(我也不希望它是固定的),但我希望在页脚扩展时视图保持在页面底部。我试过用几种方法来处理这个问题,但在所有情况下,行为都是一样的。折叠页脚时,动画期间文档高度变小,页脚保持锚定在屏幕底部。展开页脚时,视口的位置不会改变,文档高度会增加,并且页脚的动画发生在折叠下方。
我已经使用 javascript 和 CSS3 处理了这个动画。行为是相同的。我也尝试过绝对定位页脚并同时调整页脚上方内容的高度......同样的行为。
最后,我尝试了一些 javascript hack 来为 window.scrollTo 设置动画,而其他动画正在发生。这不起作用令人困惑。这是该 hack 的一个基本示例。
collapse: function(container,collapsed) {
var maxHeight = 250,
steps = 50,
params = this.animParams(maxHeight,steps,collapsed);
for (i = 0; i < params.length; i++) {
this.animateCollapse(container,params,i);
}
},
animateCollapse: function(container,params,i) {
setTimeout(function() {
container.css('height',params[i]);
window.scrollTo(0,100000);
},10);
},
animParams: function(maxHeight, steps, collapsed) {
var arr = [];
for (i = 0; i <= steps; i++) {
var multiplier = (steps - i) / steps;
arr.push(maxHeight * multiplier);
}
if (!collapsed) {
arr = arr.reverse();
}
return arr;
},
在上面的示例中,我使用的值 (100000) 比文档高,因为在该循环期间,即使动画同时发生,$(document).height() 返回的值也不会改变。
所以,最后,我的目标非常简单——当页脚高度设置动画并增加文档高度时,将视口保持在屏幕底部。有任何想法吗?
谢谢