使用HTML/CSS覆盖浏览器表单填充和输入突出显示

cas*_*raf 127 html css input autofill

我有两种基本形式 - 登录和注册,都在同一页面上.现在,我对登录表单自动填充没有任何问题,但是注册表单自动填充,我不喜欢它.

此外,表单样式获得黄色背景,我无法覆盖,我不想使用内联CSS这样做.我该怎么做才能让它们停止变黄和(可能)自动填充?提前致谢!

Tam*_*Pap 190

用一个"强大的"内部阴影欺骗它:

input:-webkit-autofill {
    -webkit-box-shadow:0 0 0 50px white inset; /* Change the color to your own background color */
    -webkit-text-fill-color: #333;
}

input:-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0 50px white inset;/*your box-shadow*/
    -webkit-text-fill-color: #333;
} 
Run Code Online (Sandbox Code Playgroud)

  • 这真的很聪明.:) (9认同)
  • (顺便说一句,对于任何怀疑的人来说,似乎工作得很好.) (7认同)
  • 这很棒,因为它有效并且非常有创意。但它让我想起了旧的 IE6 hacks 之类的东西。谷歌给我们一个 :-webkit-autofill 参数并且不让设计师覆盖默认值,这有点糟糕,对吧? (4认同)
  • +1000(如果可以的话)是的我无法用其他任何方式来做到这一点.这真是对webkit的侵扰...... (3认同)
  • 在 chrome 96.0 中不起作用 chrome 的 -internal-light-dark 样式会覆盖所有内容。他们甚至添加了!重要的样式,因此您无法覆盖它!当我们无法以编程方式更改用户在浏览器中的亮/暗首选项时,这是没有意义的...... (2认同)

Phi*_*off 148

对于自动完成,您可以使用:

<form autocomplete="off">
Run Code Online (Sandbox Code Playgroud)

关于着色问题:

从您的屏幕截图我可以看到webkit生成以下样式:

input:-webkit-autofill {
    background-color: #FAFFBD !important;
}
Run Code Online (Sandbox Code Playgroud)

1)由于#id-styles比.class样式更重要,以下内容可能有效:

#inputId:-webkit-autofill {
    background-color: white !important;
}
Run Code Online (Sandbox Code Playgroud)

2)如果这不起作用,你可以尝试通过javascript编程设置样式

$("input[type='text']").bind('focus', function() {
   $(this).css('background-color', 'white');
});
Run Code Online (Sandbox Code Playgroud)

3)如果这不起作用,你注定要失败:-)考虑一下:这不会隐藏黄色,但会使文本再次可读.

input:-webkit-autofill {
        color: #2a2a2a !important; 
    }
Run Code Online (Sandbox Code Playgroud)

4)css/javascript解决方案:

CSS:

input:focus {
    background-position: 0 0;
}
Run Code Online (Sandbox Code Playgroud)

以下javascript必须运行onload:

function loadPage()
{
    if (document.login)//if the form login exists, focus:
    {
        document.login.name.focus();//the username input
        document.login.pass.focus();//the password input
        document.login.login.focus();//the login button (submitbutton)
    }
}
Run Code Online (Sandbox Code Playgroud)

例如:

<body onload="loadPage();">
Run Code Online (Sandbox Code Playgroud)

祝好运 :-)

5)如果以上工作都没有尝试删除输入元素,克隆它们,然后将克隆的元素放回页面(适用于Safari 6.0.3):

<script>
function loadPage(){

    var e = document.getElementById('id_email');
    var ep = e.parentNode;
    ep.removeChild(e);
    var e2 = e.cloneNode();
    ep.appendChild(e2);

    var p = document.getElementById('id_password');
    var pp = p.parentNode;
    pp.removeChild(p);
    var p2 = p.cloneNode();
    pp.appendChild(p2);
}

document.body.onload = loadPage;
</script>
Run Code Online (Sandbox Code Playgroud)

6)从这里:

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
    $(window).load(function(){
        $('input:-webkit-autofill').each(function(){
            var text = $(this).val();
            var name = $(this).attr('name');
            $(this).after(this.outerHTML).remove();
            $('input[name=' + name + ']').val(text);
        });
    });
}
Run Code Online (Sandbox Code Playgroud)


小智 23

添加此CSS规则,黄色背景颜色将消失.:)

input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0px 1000px white inset;
}
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用 - 谢谢!(虽然我需要将白色更改为我真正想要的颜色) (2认同)
  • 显然是最好的答案。 (2认同)

Jas*_*ter 13

<form autocomplete="off">
Run Code Online (Sandbox Code Playgroud)

几乎所有现代浏览器都会尊重这一点.

  • 是的,但看看我说的话:"我怎么能**保持自动完成但失去风格**webkit推" (11认同)
  • 太棒了,但它只解决了不太重要的问题; 我怎么能保持自动完成但却失去了风格(http://prntscr.com/4hkh)webkit猛烈抨击它?o:谢谢 (7认同)
  • 那个,以及我想要自动完成的事实,而不是它应用的风格...... (3认同)

don*_*don 13

经过2个小时的搜索,似乎Google Chrome仍然以某种方式覆盖了黄色,但我找到了修复程序.它也适用于悬停,焦点等.您所要做的就是添加!important它.

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
    -webkit-box-shadow: 0 0 0px 1000px white inset !important;
}
Run Code Online (Sandbox Code Playgroud)

这将完全从输入字段中删除黄色


Ker*_*777 11

这似乎对我有用:

input {
  -webkit-background-clip: text !important;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您想要透明背景,这是唯一的解决方案 (5认同)
  • @Kerry7777 这是唯一对我有用的解决方案。这是最简单的一种。你让我今天一整天都感觉很好 (2认同)