Как запретить Chrome менять шрифт при автозаполнении имени пользователя/пароля?

У меня есть форма входа с вводом имени пользователя и пароля. В Chrome для Windows (чего не происходит в других браузерах или на Mac) при наведении курсора на сохраненное имя пользователя в диспетчере паролей Chrome шрифт меняется. Затем изменение шрифта изменяет ширину ввода, нарушая мое выравнивание.

Очевидно, я могу установить фиксированную ширину для моего ввода, чтобы сохранить выравнивание, но это на самом деле не решает проблему, а просто накладывает на нее пластырь. Чего я действительно хочу, так это предотвратить изменение шрифта в первую очередь.

Я попытался настроить таргетинг ввода с помощью :-webkit-autofill и поставить !important по всему CSS моего ввода, просто чтобы посмотреть, будет ли что-нибудь придерживаться, кроме кубиков.

Кодепен здесь. Вам нужно будет использовать Chrome в Windows и использовать диспетчер паролей Google.

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>

СКСС:

// 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;
    }
  }
}

Будем признательны за любые подсказки по предотвращению этого изменения шрифта!

У меня такая же проблема. Мне кажется, это ошибка в Chrome. Я решил поместить все свои поля ввода, которые постоянно меняли ширину, в контейнеры flexbox, чтобы сохранить стабильную ширину в качестве временного обходного пути.

Rias 24.06.2019 14:34

Вопреки тому, что вы здесь говорите, это не относится к Windows. Та же ошибка будет существовать во всех настольных версиях Chrome. Если вы не заметили этого на Mac, я подозреваю, что это связано с тем, что ваша установка Chrome на этом Mac не была обновлена ​​​​в то время, когда вы тестировали. (Обратите внимание, что ошибка появилась в релизной версии Chrome менее чем за месяц до того, как вы задали этот вопрос.)

Mark Amery 03.01.2020 16:16

Тот же вопрос в stackoverflow.com/questions/57551530/…

Binyamin 29.09.2020 22:14

Отвечает ли это на ваш вопрос? Ввод текста очень маленький при наведении на предложение автозаполнения

Dzmitry Dranitski 05.08.2021 21:50
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
47
4
10 461
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Я не работаю в Windows, но вы пытались настроить таргетинг на метку и форму? Re: специфика css. Затем попробуйте автоматическое заполнение web-kit на всех

Если бы это было так просто! Добавил это в свой код, но не повезло.

shainanana 08.05.2019 18:22

На данный момент кажется, что в Chrome это невозможно изменить. Я бы определенно назвал это ошибкой.

Тем не менее, достойный обходной путь — установить font-family для всех входных данных с возможностью автозаполнения или входных данных в формах, которые имеют возможности автозаполнения:

font-family: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Ubuntu, Arial, sans-serif;

Это отличное кросс-браузерное и кросс-платформенное решение, потому что оно просто принимает любой ваш системный шрифт, что, похоже, делает Chrome для своего шрифта автозаполнения.

Это также гарантирует, что ваши формы будут иметь читаемые шрифты в любой ОС, которую использует ваш пользователь.

Кажется, это недавнее изменение в Chrome: Проблема 953689: ранее введенные значения формы переопределяют стиль при наведении курсора мыши. Насколько я видел, это происходит как в macOS, так и в Windows, везде, где автозаполнение представлено конечному пользователю. По-видимому, это было сделано намеренно, чтобы исправить проблему безопасности с предыдущей реализацией — Проблема 916838: Безопасность: две уязвимости автозаполнения вместе позволяют сайтам незаметно считывать номера кредитных карт после одного нажатия клавиши..

Похоже, что на данный момент нет способа переопределить эти новые стили — если изменение стилей действительно слишком неприятно, вы можете либо отключить автозаполнение (Отключение автозаполнения Chrome), либо установить стили шрифта вашего поля (font-family, font-weight, font-style, font-size). чтобы соответствовать предложениям автозаполнения Chrome — как предлагается здесь: https://stackoverflow.com/a/56997845/1798491)

Хе. Судя по просмотрам и голосам здесь, многие люди раздражены тем ущербом, который я причинил своим отчетом об эксплойте. Извини за это. В свою защиту я сделал предупредить команду безопасности Google, что это изменение имело недостатки UX, и предлагаю другое исправление, но они все равно сделали это. С другой стороны, фиксация теперь публично реализует альтернативное исправление, так что, возможно, скоро мы также увидим принудительное изменение шрифта по умолчанию.

Mark Amery 03.01.2020 15:24

@MarkAmery есть идеи, когда это исправление будет выпущено?

Lenny D 04.03.2020 11:33

У меня больше не работает на macOS Chrome версии 95. Причина, по которой Chrome удалил стили шрифтов автозаполнения, была связана с проблемой безопасности bugs.chromium.org/p/chromium/issues/detail?id=1035058. ::first-line был уловкой, чтобы обойти их первоначальное «исправление» с пластырем, но теперь они также исправили наш обходной путь. Следует отметить, что Chrome 96 будет поддерживать :autofillchromestatus.com/feature/5592445322526720, но я не уверен, в какой степени Chrome позволит нам стилизовать его.

Kerry Johnson 04.11.2021 18:47

Возвращаясь, чтобы сказать, что :autofill, к сожалению, не позволяет изменять размер шрифта (не проверял другие свойства шрифта).

Kerry Johnson 06.01.2022 07:29
Ответ принят как подходящий

попробуй это!

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

вам может понадобиться только это, хотя

     &:-webkit-autofill::first-line

остальные на всякий случай

Ну что вы знаете, это сработало! Мне нужна была только первая строка. Спасибо @cup_of!

shainanana 03.04.2020 14:35

Хорошо, это окончательный ответ на проблему после всех этих лет! Единственное предостережение: вы должны повторить стили для семейства шрифтов, размера шрифта и веса шрифта.

Pablo Enrici 04.10.2020 02:29

Реализовано в январе 2021 года, и input:-webkit-autofill::first-line правильно работает в Chrome.

Patrick Hillert 15.01.2021 08:39

в моем случае не сработало

ionescho 31.01.2022 15:51

Как изменить стили автозаполнения Chrome при вводе:

input {
...
font-family: $body-font;
font-size: 1rem;
font-weight: bold;
color: #000;
background-color: #fff;
  
// Background color
&:-webkit-autofill {
  -webkit-box-shadow: 0 0 0 1000px #fff inset;
}
  
// Font styles
&:-webkit-autofill::first-line {
  font-family: $body-font;
  font-size: 1rem;
  font-weight: bold;
  // color: green;
}

}

Вот рабочее решение, которое сработало для меня в 2021 году, чтобы Chrome не менял шрифт в полях ввода пароля/имени пользователя:

input#username {
  font-family: "Rubik";
  font-weight: bold;
  color: blue;
}

input:-webkit-autofill::first-line {
      color: red;
      font-family: "Rubik"; 
      font-weight: bold;
}
<link href = "https://fonts.googleapis.com/css?family=Rubik&display=swap" rel = "stylesheet">
<input id = "username" name = "username"></input>

Также я заметил, что по какой-то причине display: flex конфликтует с этим кодом, взгляните:

input#username {
  font-family: "Rubik";
  color: blue;
  font-weight: bold;
  display: flex;
}

input:-webkit-autofill::first-line {
      color: red;
      font-family: "Rubik";
      font-weight: bold;
}
<link href = "https://fonts.googleapis.com/css?family=Rubik&display=swap" rel = "stylesheet">
<input id = "username"></input>

Это сработало для меня.

jewishspiderweb 06.10.2021 16:58

Спасибо за дополнительное примечание о display: flex. Это было ключом к решению проблемы для меня.

Anson 03.11.2021 00:22

Другие вопросы по теме