如何从 Material-UI 中删除 TextField 的下划线?

IT技术 css reactjs material-ui
2021-03-24 13:20:48

在使用 material-ui TextField 时,我希望 TextField 是裸露的(没有下划线)。我确实知道使用 material-ui 中的 InputBase 可以实现这一点,但我有点需要使用 TextField API 来实现这一点,但我没有在 API 指南中找到这样做的方法。

2个回答

您还可以使用InputPropsTextField 组件上prop 通过将disableUnderline属性设置为 来实现此目的true

<TextField
  fullWidth
  placeholder="Search..."
  InputProps={{ disableUnderline: true }}
 />

如果有人检查 <Autocomplete ,这样做也会禁用自动完成下拉列表。希望这对某人有帮助。
2021-06-07 13:20:48
只需将其恢复InputProps为评论中提到的。为了将来参考,小写的inputProps目标是输入属性,而不是传递给 MUI 组件的道具。文档
2021-06-09 13:20:48
使用大写的“InputProps”而不是“inputProps”!
2021-06-12 13:20:48
真正的答案
2021-06-19 13:20:48
对我来说,这适用于自动完成,但使用InputProps, 大写
2021-06-20 13:20:48

即使这是目前已接受的答案,请改为查看其他答案(使用disableUnderlineprops)。我在最近写了一个关于如何自定义下划线的答案(使用类似于这个答案的方法)之后写了这个答案,并且错过了一个专门用于删除下划线的属性。


下面是如何删除下划线的示例。:before用于默认和悬停样式并:after用于聚焦样式,因此需要为这两种情况删除边框。

多个 & 符号(例如"&&&:before")增加了规则CSS 特异性,使其胜过默认样式(例如&:hover:not($disabled):before)。

import React from "react";
import ReactDOM from "react-dom";
import TextField from "@material-ui/core/TextField";
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles({
  underline: {
    "&&&:before": {
      borderBottom: "none"
    },
    "&&:after": {
      borderBottom: "none"
    }
  }
});
function App() {
  const classes = useStyles();
  return <TextField defaultValue="default text" InputProps={{ classes }} />;
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

编辑 TextField 下划线

相关答案:如何在不使用主题的情况下自定义 Material-UI 的下划线样式?

谢谢你,瑞安,非常详细的答案,这正是我想要的!
2021-06-16 13:20:48