我创建了一个Modal
,并在其中放置了一些文本来描述我的应用程序以及如何使用它,但文本溢出了Modal
,因此文本的顶部和底部不可见。我希望使组件可滚动,以便文本不会超出页面的结尾。
// The styling for the modal
const styles = theme => ({
paper: {
position: 'absolute',
width: theme.spacing.unit * 130,
backgroundColor: theme.palette.background.paper,
boxShadow: theme.shadows[5],
padding: theme.spacing.unit * 4,
},
});
function getModalStyle() {
const top = 50
const left = 50
return {
top: `${top}%`,
left: `${left}%`,
transform: `translate(-${top}%, -${left}%)`,
overflow: "scroll"
};
}
// The actual modal
<Modal
aria-labelledby="simple-modal-title"
aria-describedby="simple-modal-description"
open={this.state.modalOpen}
onClose={this.handleModalClose}
>
<div style={getModalStyle()} className={classes.paper}>
<MyLongTextComponent/>
</div>
</Modal>
我希望它的滚动功能独立于它后面的实际页面。我还没有在互联网上找到太多的帮助,所以任何指针将是非常有帮助的!此外,如果Modal
是错误的组件在这种情况下使用,请让我知道。我是一个中等新的React和材料用户界面,所以如果有一个更好的方法,我很乐意学习如何。
6条答案
按热度按时间swvgeqrz1#
您需要使用'overflow = scroll'作为模式样式。
下面是获取可滚动material-ui modal的示例代码。在本例中,withStyles用于为modal应用样式。
f2uvfpb92#
使用Dialog组件会有更好的运气。Modal是Dialog利用的一个较低级别的构造。您可以在组件演示部分找到Dialog示例。
kse8i1jr3#
我知道这个问题已经回答了,但我发现检查的答复不完整。
为了使一个适当的模态,你最有可能希望它有一个最大的高度,并分为3个主要部分:
如果内容(即表单)中有一个很长的元素列表,将
overflow: 'scroll'
设置为modal
将导致两个主要问题:maxHeight
将仅应用于容器,而其余内容仍将在下面可见一个只涉及标题和内容的更接近生产的示例是:
除了格式更好之外,此解决方案还有两个主要区别,可以解决上面解释的实际问题:
overflow: hidden
,把所有东西都藏在盒子外面overflow: scroll
,这不会暴涨的标题了,这是我们正在寻找的希望这有帮助!
s5a0g9ez4#
对于任何人寻找一个快速的答案,这是我找到的解决方案:
所以只有两个简单的步骤...
1.使模式溢出可滚动
1.更新modal的每个直接子元素的样式。你至少需要添加这2个属性:
然后,您可以使用css重新定位具有
top
或left
属性的内容,或者根据需要自定义容器。不需要切换到对话框组件来解决此问题。chy5wohz5#
在v5文档中,您希望使用
Dialog
,而不是具有scroll=body|paper
属性的Modal
。不要使用带有
overflow:auto
和封闭<div/>
的模态:使用清洁剂
<Dialog/>
在此处阅读有关MUI滚动内容对话框的更多信息...
krcsximq6#
使用props disableScrollLock。默认设置为“false”。所有可用的props都在这里:https://mui.com/material-ui/api/modal/