input:-webkit-autofill 导致chrome的输入框背景颜色变成黄色
填写form表单时发现chrome的一个好坑啊!
当你之前有填写过表单,获取焦点时,input会有一个记录之前填写过的文本的下拉列表式的东东,就像这样:(抱歉丑了点,隐私问题打上了马赛克)
按理说,这没什么问题,很多时候为了方便,也需要它记录输入,但是,同时也发现,文本框变成了屎黄色了!而且当你选择其中的文本时它依然还是屎黄色!
真是卧槽了…… 这完全不是我想要的效果啊,谁愿意面对着一坨坨屎黄的东西啊!为什么会这样?为什么呢?我也不知道,其他浏览器不会呀~ 一向以良好形象示人的chrome怎么就变成这样了呢?
好吧,只能到百度里谷歌一下了!还真不是只有我一个人遇到这样的问题的!
原来是因为:
看看,不仅input, textarea、select也一样有,而且只有是“-webkit”啊!看到这个你一定会想到设置background-color来覆盖它,于是开始巧代码……折腾几秒钟之后,信心满满的刷新,你会发现…这并没有什么卵用啊啊啊~
先不管它他为什么要这样,大公司的要这么干,你不服能去揍他吗?!来看看解决办法!
方法一:
因为这玩意出现只有在之前有输入记录的情况下才会出现的,所以只有禁用input的记录就能ok!比如:<input type=”text” autocomplete=”off”>,如此当你点击了input时它就不会有那一列表了!整个世界也就干净了!当然,如果你能忍受那屎黄色,也可以把它给“on”了,或者不设置,因为autocomplet默认就是’on’的!
不过,很多时候可能需求不允许你去掉简单方便的记录!那可咋整?
于是,
以下部分来自:
作者:Katherine_Lisa
来源:CSDN
原文:https://blog.csdn.net/qq_36671474/article/details/77980502
情景一:input文本框是纯色背景的
可以对input:-webkit-autofill使用足够大的纯色内阴影来覆盖input输入框的黄色背景,如:
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
border: 1px solid #CCC!important;
}
如果你有使用圆角等属性,或者发现输入框的长度高度不太对,可以对其进行调整,除了chrome默认定义的background-color,提升其优先级以外,其他的属性均可使用
background-image,color不能用!important!important提升其优先级,如:
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
border: 1px solid #CCC!important;
height: 27px!important;
line-height: 27px!important;
border-radius: 0 4px 4px 0;
}
情景二:input文本框是使用图片背景的
方法一:
因为这个样式的出现只有在之前有输入记录的情况下才会出现的,所以只有禁用input的记录就能ok!比如:<input type="text" autocomplete="off">,这样当你点击了input时它就不会有那一列表了!
autocomplete属性默认值为on,也就是设置为on的情况下,input才会有黄色的背景色哦!
方法二(js):
if(navigator.userAgent.toLowerCase().indexOf('chrome')>=0){
$(window).load(function(){
$('input:-webkit-autofill').each(function(){
var txt=$(this).val();
var name=$(this).attr('name');
$(this).after(this.outerHTML).remove();
$('input[name='+name+']').val(txt);
})
})
}
拓展(innerHTML与outerHTML):一张图一目了然!!!(这是在百度上找的一张图,觉得非常形象)!
outerHTML可以用来更改或获取元素内所有的html和文本内容,包含引用该方法元素自身的标签,比如:console.log($('#testdiv').outerHTML),打印出来的结果就是:<div id='testdiv'><p>Text in DIV</p></div>,innerHTML可以用来获取元素内的html和文本内容;innerText只获取元素内的纯文本内容;
注意:outerHTML、innerHTML不是W3C的标准,使用时要注意浏览器兼容性!最后,希望大家多些建议,多些指点!!



