如何去除 Material UI 的 DatePicker 的边框?

Posted

技术标签:

【中文标题】如何去除 Material UI 的 DatePicker 的边框?【英文标题】:How to remove border of Material UI's DatePicker? 【发布时间】:2021-06-08 07:37:30 【问题描述】:

这里是日期选择器组件

import React,  Fragment, useState  from "react";
import 
  KeyboardDatePicker,
  MuiPickersUtilsProvider
 from "@material-ui/pickers";
import DateFnsUtils from "@date-io/date-fns";
import makeStyles from "@material-ui/styles/makeStyles";

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

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

  return (
    <MuiPickersUtilsProvider utils=DateFnsUtils>
      <KeyboardDatePicker
        className=classes.root
        autoOk
        variant="inline"
        inputVariant="outlined"
        label="With keyboard"
        format="MM/dd/yyyy"
        value=selectedDate
       InputAdornmentProps= position: "start" 
        onChange=(date) => handleDateChange(date)
      />
    </MuiPickersUtilsProvider>
  );


export default InlineDatePickerDemo;

来自codeSandbox Link,谁能告诉我如何从所有方面移除边框? 虽然我设法知道 .MuiInput-underline:before 样式类负责边框宽度,但不知道该类在 makeStyles 中的位置。

【问题讨论】:

material-ui-pickers.dev/demo/datepicker#customization 【参考方案1】:

您只需要编辑一点KeyboardDatePicker 元素:

    删除inputVariant="outlined"

    添加

InputProps=
  disableUnderline: true

CodeSandbox

【讨论】:

这提高了我的用户界面质量,我得到了我想要的答案。 @AnkitaRay 酷!你能把答案标记为接受吗? ***.com/help/someone-answers 谢谢 :)【参考方案2】:
const useStyles = makeStyles(
  root: 
    "& .MuiInputBase-root": 
      padding: 0,
      "& .MuiButtonBase-root": 
        padding: 0,
        paddingLeft: 10,
      ,
      "& .MuiInputBase-input": 
        padding: 15,
        paddingLeft: 0
      ,
      "& .MuiOutlinedInput-notchedOutline": 
        border: 'none'
      
    
  
);

【讨论】:

【参考方案3】:

只需删除 inputVariant="outlined" 道具。所以你的代码变成了:

<KeyboardDatePicker
    className=classes.root
    autoOk
    variant="inline"
    label="With keyboard"
    format="MM/dd/yyyy"
    value=selectedDate
    InputAdornmentProps= position: "start" 
    onChange=(date) => handleDateChange(date)
  />

Here您的代码已修改。

【讨论】:

感谢您的回答,但我什至不想要那个底部边框。【参考方案4】:

在 MUI 中,您可以将 variant="standard" 添加到 TextField :

 renderInput=(params) => <TextField variant="standard" ...params />

完全:

 <DesktopDatePicker
                inputFormat="MM/dd/yyyy"
                className="mt-0 w-100"
                required=required
                margin="normal"
                id="date-picker-dialog"
                label=label
                format="dd/MM/yyyy"
                value=value
                onChange=handleDateChange
                renderInput=(params) => <TextField variant="standard" ...params />
            />

【讨论】:

以上是关于如何去除 Material UI 的 DatePicker 的边框?的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS + Material-UI:如何在每个 TableRow 中使用 Material-UI 的 FlatButton 和 Dialog?

ReactJS + Material-UI:如何使用 Material-UI 的 <DatePicker> 将当前日期设置为默认值?

我如何将 Material-UI 托管样式应用于非 Material-ui、非反应元素?

ReactJS + Material-UI:如何在 Material-UI <Table/> 的 <TableRow/> 之间交替颜色?

如何使用 Material-UI 中的 useTheme 钩子?

如何连接 Algolia 和 @material-ui