记录:IOS输入框disabled文字颜色太浅

706 阅读1分钟

解决方法

button[disabled],
textarea[disabled],
input:disabled,
input[disabled] {
  -webkit-text-fill-color: #2c363f;
  -webkit-opacity: 1;
  opacity: 1;
  color: #2c363f;
}

input[disabled]::placeholder {
  -webkit-text-fill-color: darkgray;
}

原因

IOS输入框disabled状态下有默认样式,当input元素被禁用(disabled)时,默认将disabled属性的透明度(opacity)设置为0.3,导致文本内容在视觉效果上不显示。

样式设置不生效

如果设置完以上样式依然不生效,则看下是不是有其他样式覆盖,比如以下设置是不生效的:

.el-input.is-disabled .el-input__inner,
.el-cascader.is-disabled .el-cascader__label,
.el-radio__input.is-disabled + span.el-radio__label,
.el-textarea.is-disabled .el-textarea__inner,
.el-checkbox__input.is-disabled + span.el-checkbox__label {
  color: #2c363f !important;
}

button[disabled],
textarea[disabled],
input:disabled,
input[disabled] {
  -webkit-text-fill-color: #2c363f;
  -webkit-opacity: 1;
  opacity: 1;
  color: #2c363f;
}

解决:在element选择器处加上同样opacity配置,避免!important滥用

其他

最近发现一个奇怪的问题,iOS混合APP里面接口请求404,其他浏览器则正常,猜测是webview实现原理原因,导致请求http.jsp没有带上相对路径而报404,最后解决方法也是为老项目这个请求加上相对路径才生效/xxx/http.jsp