【发布时间】:2017-12-02 07:58:53
【问题描述】:
我使用 barba.js 文档中的代码如下在页面之间切换。
var FadeTransition = Barba.BaseTransition.extend({
start: function() {
Promise
.all([this.newContainerLoading, this.fadeOut()])
.then(this.fadeIn.bind(this));
},
fadeOut: function() {
return $(this.oldContainer).animate({ opacity: 0 }).promise();
},
fadeIn: function() {
var _this = this;
var $el = $(this.newContainer);
$(this.oldContainer).hide();
$el.css({
visibility : 'visible',
opacity : 0
});
$el.animate({ opacity: 1 }, 400, function() {
_this.done();
});
}
});
Barba.Pjax.getTransition = function() {
return FadeTransition;
};
问题是滚动位置保留在新页面中。 我试图添加 $(window).scrollTop(0);在 fadeIn 函数中,但是当按下返回按钮时会产生不必要的滚动。怎么解决?
以下是添加$(window).scrollTop(0);后的行为
- 在页面 A 中,向下滚动并按链接到页面 B。进入页面 B 并在顶部具有滚动位置
- 按返回键,B页滚动到A页的位置,然后淡出
- 页面 A 进入并在顶部有滚动位置
- 向下滚动并按下前进按钮。 Page A 滚动到顶部然后淡出
- 页面 B 进入并在顶部有滚动位置
以下是预期的行为:
- 在页面 A 中,向下滚动并按链接到页面 B。进入页面 B 并在顶部具有滚动位置
- 按下返回按钮,页面 B 淡出而不滚动
- 页面A进入,滚动位置为第1步
【问题讨论】:
标签: javascript pjax