Chrome的自动填充在四舍五入的输入字段上留下灰色的角落

smtd7mpg  于 2023-06-19  发布在  Go
关注(0)|答案(6)|浏览(157)

假设某人正在开发一个允许用户创建配置文件的网站。这位设计师非常喜欢圆角输入字段的外观,但Chrome的自动填充功能对它们做了一些奇怪的事情。当然,他们可以采取简单的方法,删除边界半径定义,从而避免奇怪的角落,但这样网站就不会有他们所希望的外观。
下面是使用自动填充时字段的before-and-after images
这里有一个JSFiddle,适合任何想玩它的人。
如果有帮助,下面是用于修改字段的相关代码:

.field {
    background-color: #202020;
    border: 1px solid #000;
    border-radius: 4px;
    box-shadow: 0 0 5px #000;
    color: #d8d8d8;
}

input:-webkit-autofill {
    box-shadow: 0 0 0 100px #202020 inset, 0 0 5px #000;
    -webkit-text-fill-color: #d8d8d8;
}

为了找到这个问题背后的罪魁祸首,我们做了几次尝试,包括从两个定义中删除外部阴影,以及改变内部阴影的位置和模糊半径。灰色的角落还在。唯一真实的的“解决方案”是恢复方形角落,但这一选择被保留为最后手段。
在无数次寻找解决这个问题的方法后,所能找到的都是规避默认淡黄色背景的方法。这是个好消息,但设计师仍然留下了那些丑陋的角落。有没有一种方法可以完全摆脱它们,保持该领域的原始风格?还是没有解决办法的小故障
感谢您提供的任何见解或帮助。

smdnsysy

smdnsysy1#

Kreven的解决方案虽然不是最优雅的代码行,但我认为对大多数人来说肯定能完成这项工作。然而,我想稍微修改一下,解释一下为什么它能在第一位工作。让我们来看看这行代码:

transition: background-color 2147483647s;

这是一个需要68.24年才能完成的过渡。看起来很傻,对吧?如果你想知道这个神奇的数字是从哪里来的(2147483647),这是一个整数的最大大小,因此也是CSS转换的最大持续时间。这种转变所做的是让你的浏览器的自动填充实现需要64年的时间来改变你输入的背景颜色。
同样值得注意的是,这个便宜的技巧将使您不需要使用“-webkit-box-shadow”CSS命令(当然,除非您需要自动填充背景颜色与非自动填充背景颜色不同)。
希望这对某人有帮助!干杯

kkbh8khc

kkbh8khc2#

我发现增加边框宽度并使其与输入背景颜色相同似乎有帮助。然后减少填充以达到相同的高度:
https://jsfiddle.net/Lguucatv/1/

border: 4px solid #202020;
padding: 1px;

还修改了盒形阴影以匹配原始设计:

box-shadow: 0 0 0 1px #000, 0 0 5px 1px #000;
ar7v8xwq

ar7v8xwq3#

有没有一种方法可以完全摆脱它们,保持该领域的原始风格?
这里是CSS

body {
  background-color: #282828;
}

.field {
    background-color: #202020;
    border: 1px solid #000;
    color: #d8d8d8;
  margin: 100px;   /* adding space around it to  */
  padding: 5px;   /* make it easier to see      */
}

input:-webkit-autofill {
    box-shadow: 0 0 0 100px #202020 inset, 0 0 5px #000;
    -webkit-text-fill-color: #d8d8d8;
}

DEMO

gfttwv5a

gfttwv5a4#

添加过渡到背景色与高动画时间到.field元素

.field {
  ...
  transition: background-color 5000s;
}

发现溶液here
demo on codepen

50few1ms

50few1ms5#

我把这个问题添加到我的CSS中:

@media (prefers-color-scheme: dark) {
  [data-theme*=dark] {
    color-scheme: dark;
  }
}
ua4mk5z4

ua4mk5z46#

这可以帮助您避免这些恼人的边界:

.field {
  -webkit-box-shadow: inset 0 0 0 30px #2E2E2E !important;
  background-clip: content-box !important;
}

相关问题