我有一个带键盘的模态窗口。一切都很好,除了我无法删除滚动条。我尝试将overflow:'hidden'
添加为内联css,但仍然没有。
此外,即使在引导程序中使用container-full padding-0
,组件仍然不会一直到屏幕边缘。所以我想这就是问题所在。
这是我渲染组件的地方
<div className="container-full padding-0">
<div className="row">
<div className="col-sm-3">
<ButtonsGrid list={this.state.list} clicked={this.clicked}/>
</div>
<div className="col-sm-3" style={{paddingLeft:0, paddingRight:0}}>
<ButtonsGrid list = {this.state.list} clicked={this.clicked}/>
</div>
<div className="col-sm-6" style={{paddingRight: 0, paddingLeft: 0}}>
<Keyboard search={this.search}/> <-------------- HERE
</div>
</div>
</div>
组件的render
看起来像这样:
render() {
return(
<div>
<Paper
onClick={this.toggleKeyboard}>
<p
style={{
fontSize:40,
overflow:'hidden'}}>
{this.state.input !== '' ?
this.state.input : 'Search...'}
</p>
</Paper>
<br />
{this.state.showKeyboard ?
<Dialog
open={this.state.showKeyboard}
maxWidth='md'fullWidth>
<GridList
cellHeight={50}
cols={11}
style={{overflowX:'hidden'}}>
{this.state.keyboard.length > 0 ?
this.state.keyboard.map(key => {
return(
<Button
disabled={key.value === ''}
key={Math.random()*13}
style={{minWidth: '30px', border: '1px solid'}}
color="default"
onClick={key.value !== 'Enter' ?
() => this.onInputChanged(key.value) :
() => this.search(key.value)}>
<div
style={{fontSize:'15px',
display: 'flex',
justifyContent: 'center',
textAlign:'center'}}
>
{key.value}
</div>
</Button>
)
}):null}
</GridList>
</Dialog>:''}
</div>
);
}
此外,here's是视觉效果。
如果我在浏览器中检查元素,我可以取消选中溢出并removes。
我尝试将overflow:'hidden'
添加到组件获得呈现的div
但仍然无效。
有什么想法吗?
答案 0 :(得分:4)
只需在DialogContent
上设置溢出:
<Dialog
fullWidth={true}
maxWidth="xl"
open={this.state.isChartOpen}
onClose={() => this.setState({ isChartOpen: false })}
>
<DialogContent style={{ overflow: "hidden" }}>
<ContractPriceChart contracts={this.props.contracts} />
</DialogContent>
</Dialog>
答案 1 :(得分:1)
我在下面的代码中解决了功能组件中的这个问题。
您应该操纵“ ”标记的溢出属性。
当isOpen为true时,它将向html标签添加“隐藏隐藏”类。
当isOpen为false时,它将从html标记中删除“隐藏溢出”类。
import React, { useEffect } from 'react';
import Dialog from '@material-ui/core/Dialog';
import DialogContent from '@material-ui/core/DialogContent';
const MyDialog = (props) => {
const { isOpen } = props;
useEffect(() => {
const htmlElement = document.querySelector('html');
if (isOpen && !htmlElement.classList.contains('overflow-hidden')) {
htmlElement.classList.add('overflow-hidden');
} else {
htmlElement.classList.remove('overflow-hidden');
}
}, []);
useEffect(() => {
const htmlElement = document.querySelector('html');
if (isOpen && !htmlElement.classList.contains('overflow-hidden')) {
htmlElement.classList.add('overflow-hidden');
} else {
htmlElement.classList.remove('overflow-hidden');
}
}, [isOpen]);
return (
<div>
<Dialog
open={isOpen}
maxWidth="xl"
>
<DialogContent>
Content 1
Content 2
</DialogContent>
</Dialog>
</div>
);
};
并将此类添加到您的全局样式中。
.overflow-hidden {
overflow: hidden !important;
}
答案 2 :(得分:0)
答案 3 :(得分:0)
将所有对话框元素放入<Dialog><DialogContent>.....</DialogContent></Dialog>
答案 4 :(得分:0)
将所有对话框元素放入<Dialog><DialogContent>.....</DialogContent></Dialog>
这里的代码:
render() {
return(
<div>
<Paper
onClick={this.toggleKeyboard}>
<p
style={{
fontSize:40,
overflow:'hidden'}}>
{this.state.input !== '' ?
this.state.input : 'Search...'}
</p>
</Paper>
<br />
{this.state.showKeyboard ?
<Dialog
open={this.state.showKeyboard}
maxWidth='md'fullWidth>
<GridList
cellHeight={50}
cols={11}
style={{overflowX:'hidden'}}>
<DialogContent>
{this.state.keyboard.length > 0 ?
this.state.keyboard.map(key => {
return(
<Button
disabled={key.value === ''}
key={Math.random()*13}
style={{minWidth: '30px', border: '1px solid'}}
color="default"
onClick={key.value !== 'Enter' ?
() => this.onInputChanged(key.value) :
() => this.search(key.value)}>
<div
style={{fontSize:'15px',
display: 'flex',
justifyContent: 'center',
textAlign:'center'}}
>
{key.value}
</div>
</Button>
)
}):null}
</GridList>
</DialogContent>
</Dialog>:''}
</div>
);
}
答案 5 :(得分:0)
尝试使用伪元素-webkit-scrollbar将其删除:
.MuiDialog-paper::-webkit-scrollbar {
display: none;
}
如果它不起作用,您可以尝试:
.MuiDialog-root::-webkit-scrollbar {
display: none;
}
缺点是您不能内联使用它,但是我在这里进行了测试。
答案 6 :(得分:0)
你可以试试这个:
<DialogContent className={classes.hiddenScroll}>
和他们的风格:
const useStyles = makeStyles(theme => ({
hiddenScroll: {
overflow: 'hidden',
},