el-input自动填充与设置input背景色无效
问题描述:
设置登录页面的input透明背景色无效,输入信息时恢复正常。用户名和密码会自动填充。验证码那一栏是背景色设置成功了。
解决方法:
1.禁止自动填充:
在密码表单加autocomplete=“new-password”
<el-inputv-model="loginForm.password"type="password"size="large"autocomplete="new-password":placeholder="proxy.$t('login.password')"@keyup.enter="handleLogin"
/>
autocomplete="off"无效,浏览器密码管理还是会自动填充用户名和密码。new-password是表单设置新密码用的,浏览器不会自动填充。
2.保留自动填充,更改样式。
:deep(.el-input) {--el-text-color-placeholder: white;height: 40px;input {color: white;height: 40px;/* 覆盖浏览器自动填充样式,关键代码 */&:-webkit-autofill,&:-webkit-autofill:hover, &:-webkit-autofill:focus, &:-webkit-autofill:active {-webkit-text-fill-color: white !important;// -webkit-box-shadow: 0 0 0 1000px transparent inset !important; /* 设置内阴影覆盖背景色,透明色不能用这种方法 */transition: background-color 5000s ease-in-out 0s;background-color: transparent !important;caret-color: white !important;}}.el-input__prefix-inner {color: white;}.el-input__wrapper {background-color: transparent;border-radius: 0;box-shadow: inset 0px -1px 0px 0px var(--el-input-border-color, var(--el-border-color));}
}
浏览器自动填充时会加伪类,修改autofill的transition,让浏览器延迟5000s再变化背景色,一般人也不会在登录停留那么久。我这里是设置透明背景色,如果是其他颜色,可以不使用transition,直接用-webkit-box-shadow: 0 0 0 1000px red inset !important;