如何在 Textfield 材料 ui 中设计装饰风格?

Hru*_*tel 8 javascript css reactjs material-ui

我正在尝试仅添加 startAdornment 设置的默认 14px padding-left 并希望使其成为装饰占据 Textfield 的一半。我似乎无法弄清楚一般如何设置 startAdornment 的样式。

我尝试了 div 本身的样式,这有效,但仍然有一个潜在的 14px 填充。我尝试设置 InputAdornment 本身的样式,但似乎没有效果。

InputProps={
    this.state.didChange[rowIndex] ? {
        startAdornment: (
            <InputAdornment
                position="start"
                component="div"
                style={{paddingLeft: '-14px'}}
                disablePointerEvents>
                <div style={{ backgroundColor: '#D3D4D0', marginLeft: '-14px', padding: "10px 13px", width: "26px", color: '#a1a39b' }}>
                    {prevVals[rowIndex]}
                </div>
            </InputAdornment>
        )
    } : null} />
Run Code Online (Sandbox Code Playgroud)

这是我当前代码的结果: 在此处输入图片说明 这就是我要的: 在此处输入图片说明 <-- 您可以忽略无关紧要的边框颜色差异,我可以更改它。

Lin*_*son 12

FilledInputOutlinedInput类中有adornedStartadornedEnd类。因此您可以使用它们或使用TextField取决于您使用的变体。 InputProps

 <TextField
           name={'text'}
           variant="outlined"
           InputProps={{
               endAdornment:
               <IconButton onClick={()=>0}>x</IconButton>,
               classes: {
                          adornedEnd: classes.adornedEnd
                         }
               }}
           />
Run Code Online (Sandbox Code Playgroud)

这是CodeSandbox


Nea*_*arl 7

InputAdornment您可以通过删除左侧的填充来更改背景颜色,并在装饰中设置匹配的填充(基于此处OutlinedInput输入的填充);

import MuiTextField from '@mui/material/TextField';
import { styled } from '@mui/material/styles';

const TextField = styled(MuiTextField)(({ theme }) => ({
  '& .MuiOutlinedInput-root': {
    paddingLeft: 0,
  },
  '& .MuiInputAdornment-root': {
    backgroundColor: theme.palette.divider,
    padding: '28px 14px',
    borderTopLeftRadius: theme.shape.borderRadius + 'px',
    borderBottomLeftRadius: theme.shape.borderRadius + 'px',
  },
}));
Run Code Online (Sandbox Code Playgroud)
<TextField
  placeholder="Password"
  InputProps={{
    startAdornment: (
      <InputAdornment position="start">
        <Visibility />
      </InputAdornment>
    ),
  }}
/>
Run Code Online (Sandbox Code Playgroud)

Codesandbox 演示