如何更改 Material UI 的日期选择器的填充?

Posted

技术标签:

【中文标题】如何更改 Material UI 的日期选择器的填充?【英文标题】:How to change padding of Material UI's datepicker? 【发布时间】:2021-01-27 20:43:31 【问题描述】:

Here 是密码框链接

function InlineDatePickerDemo(props) 
  const [selectedDate, handleDateChange] = useState(new Date());

  return (
    <Fragment>
      <MuiPickersUtilsProvider utils=DateFnsUtils>
        <KeyboardDatePicker
          style= padding: "20px" 
          autoOk
          variant="inline"
          inputVariant="outlined"
          label="With keyboard"
          format="MM/dd/yyyy"
          value=selectedDate
          InputAdornmentProps= position: "start" 
          onChange=(date) => handleDateChange(date)
        />
      </MuiPickersUtilsProvider>
    </Fragment>
  );

我想减少日期选择器框内的间隙,但提供自定义样式并没有影响。

我很想知道为什么样式不起作用以及解决此类问题的方法是什么。

【问题讨论】:

请在 Stack Overflow 上包含所有相关代码,而不仅仅是在外部站点上。 我已经包含了带有所有相关代码的代码框,而不是任何外部站点。你还想知道什么? codesandbox.io != ***.com 因此它是一个外部站点。不知道这怎么不明显。 @NearHuscarl 将代码从代码沙箱复制到此站点,在 CC-by-SA 4.0 下重新许可您的代码。作为版权所有者,您应该这样做。 我不知道如果已经提供了沙盒代码,则必须在此处包含代码,因为这更有帮助并且要求(在大多数情况下),这就是为什么我强调代码沙盒它不仅仅是任何网站,它还不止于此。无论如何,真的很抱歉给您带来麻烦,我会在此处发布任何问题时牢记这一点。 【参考方案1】:

您所做的是为父组件设置样式。为了改变picker内部组件之间的间距,需要在子组件中重写以下类:

const useStyles = makeStyles(
  root: 
    "& .MuiInputBase-root": 
      padding: 0,
      "& .MuiButtonBase-root": 
        padding: 0,
        paddingLeft: 10
      ,
      "& .MuiInputBase-input": 
        padding: 15,
        paddingLeft: 0
      
    
  
);
const classes = useStyles();

return (
  <MuiPickersUtilsProvider utils=DateFnsUtils>
    <KeyboardDatePicker
      className=classes.root
      ...
    />
  </MuiPickersUtilsProvider>
);

现场演示

【讨论】:

这会起作用,但是当使用 webpack 生产构建时,MUI 类名将被转换为字母数字字符串,这将不再起作用。不得不真正使用 html 元素。 @Nicole 这很奇怪,因为如果 className 以Mui 开头,通常不会在生产中更改它。见this。

以上是关于如何更改 Material UI 的日期选择器的填充?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React 中禁用 Material UI 的日期选择器的下划线?

如何呈现材料 UI 输入控件而不是材料 UI 日期选择器的文本字段

如何更改角度 ui-bootstrap 日期选择器的格式

Material UI 日期选择器 日期格式 React

Chrome 建议 Angular Material 日期选择器的密码

对话框中的材料 UI 更改日期字段样式