尽管我的问题与@Stephanie 相同,但@steve 的解决方案对我不起作用。
重申斯蒂芬妮和我分享的问题:
我有很长的引导模式。在小屏幕上,如果不滚动,就无法完整地看到模式。默认情况下,引导模式是位置:固定。我可以通过将其更改为位置来允许它们滚动:绝对。
但现在我有一个新问题。我的页面也很长,当我从页面底部触发模式时,模式出现在页面顶部,超出当前浏览器视图。
所以要解决这两个问题:
CSS:
// allows the modal to be scrolled
.modal {position: absolute;}
javascript/jQuery:
// jumps browser window to the top when modal is fired
$('body').on('show', '.modal', function(){
$('body').scrollTop(0);
});
但事实证明,Firefox 不喜欢 'body' 作为 scrollTop 的选择器,但喜欢 'html'。Webkit 则相反。使用此处的评论:Animate scrollTop not working in firefox
由于我使用的是 jQuery < 1.9,我可以通过浏览器嗅探来解决这个问题:
// jumps browser window to the top when modal is fired
$('body').on('show', '.modal', function(){
// Firefox wants 'html', others want 'body'
$(jQuery.browser.mozilla ? "html" : "body").scrollTop(0);
});
现在,当模态框被触发时,它们会出现在页面顶部,浏览器窗口会向上滚动以显示它们,但如果屏幕太小而无法显示模态框的整个长度,用户仍然可以向下滚动。