Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent Chrome from changing font when autofilling username/password?

Tags:

html

css

I have a login form with username and password inputs. In Chrome on Windows (doesn't happen in other browsers or on a Mac), when hovering over a saved username from the Chrome password manager, the font changes. The font change then changes the width of the input, throwing my alignment out of whack.

Obviously I can set a fixed width to my input to save my alignment but that doesn't really solve the problem, just puts a band-aid on it. What I really want is to prevent the font change in the first place.

I've tried targeting the input with :-webkit-autofill and putting !important all over my input's css just to see if anything would stick but no dice.

Codepen here. You'll need to be in Chrome on Windows and use Google's password manager.

HTML:

<form>
    <label>
        <input type="text" name="username" placeholder="Username" required />
    </label>
    <label>
        <input type="password" name="password" placeholder="Password" required />
    </label>
  <button type="submit">Login</button>
</form>

SCSS:

// setting font for more exaggerated difference
* {
  font-family: Times, "Times New Roman", serif;
}

// why doesn't this or anything else work?
input {
  &:-webkit-auto-fill {
    &,
    &:hover,
    &:focus {
    font-family: Times, "Times New Roman", serif !important;
    }
  }
}

Any clues on preventing this font change would be appreciated!

like image 700
shainanana Avatar asked May 07 '19 15:05

shainanana


People also ask

How do I Autofill a username in Chrome?

Open your Chrome browser. Click on the three dots at the top right corner. Go to Settings and find the Autofill section. To add an address, go to Addresses and more > Add, type the address and click Save.

Why are my passwords not auto filling Chrome?

In Chrome's settings (navigate to chrome://settings/ or choose Settings from the... menu?) make sure that you have both "Enable Autofill to fill out web forms in a single click" and "Offer to save passwords I enter on the web" are checked.


2 Answers

try this!

      &:-webkit-autofill::first-line,
      &:-webkit-autofill,
      &:-webkit-autofill:hover,
      &:-webkit-autofill:focus,
      &:-webkit-autofill:active {
        font-family: Times, "Times New Roman", serif !important;
      }

you might only need this though

     &:-webkit-autofill::first-line

the others are just incase

like image 103
cup_of Avatar answered Oct 14 '22 07:10

cup_of


This seems to be a recent change in Chrome: Issue 953689: Previously entered form values overrides styling when moused over. As far as I’ve seen this happens both on macOS and Windows, anywhere autofill is presented to the end user. Apparently this has intentionally been done to fix a security issue with the previous implementation – Issue 916838: Security: Two autocomplete flaws together allow sites to invisibly read credit card numbers after a single keypress

There doesn’t seem to be a way to override those new styles at the moment – if the change in styles is really too obnoxious, you can either disable autofill (Disabling Chrome Autofill) or set your field’s font styles (font-family, font-weight, font-style, font-size to match that of Chrome’s autofill suggestions – as suggested here: https://stackoverflow.com/a/56997845/1798491)

like image 26
Thibaud Colas Avatar answered Oct 14 '22 07:10

Thibaud Colas