重复问题
- 我搜索了现有的问题
最新版本
- 我测试了最新版本
当前行为 😯
自动填充的文本字段的InputAdornment与TextField的颜色不同。
预期行为 🤔
我希望InputAdornment与TextField具有相同的背景颜色。
重现步骤 🕹
<TextField
id="password"
type={showPassword ? 'text' : 'password'}
label="Password"
placeholder="Password"
autoComplete="current-password"
InputProps={{
endAdornment: (
<InputAdornment position="end">
<IconButton aria-label="toggle password visibility" onClick={togglePassword} edge="end">
{showPassword ? <VisibilityOff /> : <Visibility />}
</IconButton>
</InputAdornment>
)
}}
/>
步骤:
- 已保存凭据
- 刷新页面以触发自动填充
上下文 🔦
可能是我的问题,但由于缺少背景颜色,该字段看起来有缺陷。
你的环境 🌎
npx @mui/envinfo
System:
OS: Windows 10 10.0.19042
Binaries:
Node: 16.13.2 - C:\Program Files\nodejs\node.EXE
Yarn: Not Found
npm: 8.12.1 - C:\Program Files\nodejs\npm.CMD
Browsers:
Chrome: 103.0.5060.114
Edge: Spartan (44.19041.1266.0), Chromium (103.0.1264.49)
npmPackages:
@emotion/react: ^11.8.2 => 11.9.3
@emotion/styled: ^11.8.1 => 11.9.3
@mui/base: 5.0.0-alpha.85
@mui/icons-material: ^5.5.1 => 5.8.4
@mui/material: ^5.7.0 => 5.8.4
@mui/private-theming: 5.8.4
@mui/styled-engine: 5.8.0
@mui/system: 5.8.4
@mui/types: 7.1.4
@mui/utils: 5.8.4
@mui/x-data-grid: ^5.10.0 => 5.12.1
@mui/x-date-pickers: ^5.0.0-alpha.2 => 5.0.0-alpha.6
@types/react: ^18.0.12 => 18.0.12
react: ^18.2.0 => 18.2.0
react-dom: ^18.2.0 => 18.2.0
typescript: ^4.7.3 => 4.7.3
7条答案
按热度按时间nwsw7zdq1#
实际输入没有覆盖装饰物后面的区域,所以当浏览器为自动填充的字段设置背景时,它不会延伸到装饰物。当CSS
has()
选择器有更好的支持(这应该很快),你可以尝试通过在自己的CSS中设置根元素的背景颜色来绕过它,如下所示:li9yvcax2#
实际输入没有覆盖装饰物后面的区域,所以当浏览器为自动填充的字段设置背景时,它不会延伸到装饰物。当CSS
has()
选择器有更好的支持(应该很快),你可以尝试通过在自己的CSS中设置根元素的背景颜色来绕过它,如下所示:是否有方法可以通过styleOverride在主题中实现这一点?
wooyq4lh3#
实际输入没有覆盖装饰物后面的区域,所以当浏览器为自动填充的字段设置背景时,它不会延伸到装饰物。当CSS
has()
选择器有更好的支持(应该很快),你可以尝试通过在自己的CSS中设置根元素的背景颜色来绕过它,如下所示:是否有方法可以通过styleOverride在主题中实现这一点?
csga3l584#
是否有官方的解决方案或更新?
z3yyvxxp5#
是否有官方的解决方案或更新?
只有通过控制
autoComplete
属性例如:
InputProps={{ autoComplete: 'new-password' }}
参考MUI文档
hwazgwia6#
在尝试将TextField的startAdornment背景颜色调整为1password的自动填充背景颜色时遇到了这个问题。我成功地对其进行了微调,专门针对1password的自动填充数据属性。
虽然有点小众,但还是把它放在这里,以便将来能节省别人的时间。
作为上述解决方案的一个附加类:
在sx prop中:
结果可以在上面的TextField中显示,与下面的没有它的TextField进行比较:
w8f9ii697#
我认为我已经找到了解决这个问题的完整方案。首先让我们了解一下它是如何工作的,以便根据需要进行修改。
它实际上是什么
自动填充字段上的蓝色背景颜色是浏览器的一个功能,特别是来自Chrome的功能。你可以使用
:-webkit-autofill
伪类选择器来覆盖它。我们如何编辑它?
使用全局CSS覆盖。
在你的全局CSS文件中添加以下代码以更改颜色:
在MUI中覆盖全局主题(推荐)
你可以按照mui文档中的说明来覆盖mui文档中的全局主题
在大多数情况下,你会使用
CSSBaseLine
。因此,这是我在主题配置中实现的解决方案: