如何将文本换行到 material UI select/menu 项目组件中的下一行? (CSS 问题)
How do you wrap text to the next line in a material UI select/menu item component? (CSS issue)
我正在尝试在 select 菜单中显示学校取消的 classes。这是按天安排的:
但是,在开发者工具中使用移动分辨率时,我的菜单只是截断了溢出文本。
热力学class被截断
我正在使用 material ui 的 select 菜单和 React。 Material UI Select documentation I'm also using the menu item。我想让 classes 列出溢出到下一行。这是我每天显示 classes 的地方。
这是代码(这只是一个例子,并不是运行):
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<FormControl className={classes.formControl}>
<InputLabel id="demo-controlled-open-select-label" > Filter classes by day</InputLabel>
<Select
labelId="demo-controlled-open-select-label"
id="demo-controlled-open-select"
open={open}
onClose={handleClose}
onOpen={handleOpen}
defaultValue={subjectFilter}
onChange={handleChangeSubject}
className="styleSelect"
>
{item.SUBJECT === 'OPEN_LEARNING' &&
<ul className ="stylingList">
{(state.subjects) && state.subjects.filter(item =>
(item.SUBJECT === 'OPEN_LEARNING')).map(item =>
<li className ="stList">
{item.CLASS_FULL}
</li>
)}
</ul>
}
</MenuItem>
//this is just one day. I do this for all the days.
) )
}
</Select>
</FormControl>
我在列出的 class 中没有样式。如果需要,我只是制作了 class 名称以自定义这些区域。我只是改变了文字颜色。谢谢。我试过 overflow-wrap: break-word;在 li class (stList) 上,但它并没有使单词转到下一行。
TL;DR: 覆盖菜单项的环绕样式:
const useStyles = makeStyles((theme) => ({
root: {
whiteSpace: "unset",
wordBreak: "break-all"
}
}));
//...
const YourComponent =(props)=>{
const classes = useStyles();
//...
<MenuItem classes={{ root: classes.root }}>
}
NL;PR: 默认情况下,菜单项样式 whiteSpace: 'nowrap'
会阻止应用其他换行。您可以在 pastebin.
中检查建议的更改是如何工作的
现在,您 select 的菜单项将变为:
来自这里:
to this: .
使用 ListItem 而不是 MenuItem
按天筛选 类
>
{item.SUBJECT === 'OPEN_LEARNING' &&
<ul className ="stylingList">
{(state.subjects) && state.subjects.filter(item =>
(item.SUBJECT === 'OPEN_LEARNING')).map(item =>
<li className ="stList">
{item.CLASS_FULL}
</li>
)}
</ul>
}
</ListItem>
//this is just one day. I do this for all the days.
) )
}
</Select>
</FormControl>
我正在尝试在 select 菜单中显示学校取消的 classes。这是按天安排的:
但是,在开发者工具中使用移动分辨率时,我的菜单只是截断了溢出文本。
我正在使用 material ui 的 select 菜单和 React。 Material UI Select documentation I'm also using the menu item。我想让 classes 列出溢出到下一行。这是我每天显示 classes 的地方。
这是代码(这只是一个例子,并不是运行):
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<FormControl className={classes.formControl}>
<InputLabel id="demo-controlled-open-select-label" > Filter classes by day</InputLabel>
<Select
labelId="demo-controlled-open-select-label"
id="demo-controlled-open-select"
open={open}
onClose={handleClose}
onOpen={handleOpen}
defaultValue={subjectFilter}
onChange={handleChangeSubject}
className="styleSelect"
>
{item.SUBJECT === 'OPEN_LEARNING' &&
<ul className ="stylingList">
{(state.subjects) && state.subjects.filter(item =>
(item.SUBJECT === 'OPEN_LEARNING')).map(item =>
<li className ="stList">
{item.CLASS_FULL}
</li>
)}
</ul>
}
</MenuItem>
//this is just one day. I do this for all the days.
) )
}
</Select>
</FormControl>
我在列出的 class 中没有样式。如果需要,我只是制作了 class 名称以自定义这些区域。我只是改变了文字颜色。谢谢。我试过 overflow-wrap: break-word;在 li class (stList) 上,但它并没有使单词转到下一行。
TL;DR: 覆盖菜单项的环绕样式:
const useStyles = makeStyles((theme) => ({
root: {
whiteSpace: "unset",
wordBreak: "break-all"
}
}));
//...
const YourComponent =(props)=>{
const classes = useStyles();
//...
<MenuItem classes={{ root: classes.root }}>
}
NL;PR: 默认情况下,菜单项样式 whiteSpace: 'nowrap'
会阻止应用其他换行。您可以在 pastebin.
现在,您 select 的菜单项将变为:
来自这里:
使用 ListItem 而不是 MenuItem
按天筛选 类 >
{item.SUBJECT === 'OPEN_LEARNING' &&
<ul className ="stylingList">
{(state.subjects) && state.subjects.filter(item =>
(item.SUBJECT === 'OPEN_LEARNING')).map(item =>
<li className ="stList">
{item.CLASS_FULL}
</li>
)}
</ul>
}
</ListItem>
//this is just one day. I do this for all the days.
) )
}
</Select>
</FormControl>