材质对话框在打开时将主体滚动到顶部

Posted

技术标签:

【中文标题】材质对话框在打开时将主体滚动到顶部【英文标题】:Material Dialog scrolls body to top on open 【发布时间】:2020-03-01 03:47:54 【问题描述】:

我在 React 应用程序中使用 Material UI,并希望在我的页面上打开一个对话框。对话框打开很好,唯一的问题是当它打开时它会将我的页面正文滚动到顶部。

当我打开 Material Popover 和打开 Material TextBox 选择器时,也会发生滚动到顶部的行为。我已经为此寻找了几个小时的解决方案,似乎以前没有其他人经历过这种行为。

任何帮助将不胜感激!

openSendMatchPopup = (event) => 
  this.setState(
    ...this.state,
    anchorTargetTarget: event.target,
    dialogOpen: true,
  );
;   
<Dialog
  id='my-popover'
  open=dialogOpen
  anchorEl=anchorTargetTarget
  onClose=onClose
  anchorOrigin=
    vertical: 'bottom',
    horizontal: 'center'
  
  transformOrigin=
    vertical: 'top',
    horizontal: 'center'
  
  disableRestoreFocus
>
  Dialog is Open
</Dialog>

【问题讨论】:

你能提供带有代码的实例吗? 【参考方案1】:

我对此的解决方案是将event.preventDefault() 添加到处理程序。

【讨论】:

【参考方案2】:

只需将disableScrollLock 添加到您的对话框中即可。像这样:

<Dialog
  id='my-popover'
  open=dialogOpen
  anchorEl=anchorTargetTarget
  onClose=onClose
  anchorOrigin=
    vertical: 'bottom',
    horizontal: 'center'
  
  transformOrigin=
    vertical: 'top',
    horizontal: 'center'
  
  disableRestoreFocus
  disableScrollLock 
>
  Dialog is Open
</Dialog>

文档:https://material-ui.com/api/modal/

【讨论】:

以上是关于材质对话框在打开时将主体滚动到顶部的主要内容,如果未能解决你的问题,请参考以下文章

选择日期后,jQuery UI datepicker会使屏幕滚动到顶部

每次打开时如何使 div 模态滚动到顶部?

清除 jQuery 对话框在打开时验证

Word 2007:如何在打开时设置“显示推荐样式”

如何在React.js中显示模态滚动到顶部

CSS中的滚动材质设计对话框