У меня есть форма входа с вводом имени пользователя и пароля. В 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;
}
}
}
Будем признательны за любые подсказки по предотвращению этого изменения шрифта!
Вопреки тому, что вы здесь говорите, это не относится к Windows. Та же ошибка будет существовать во всех настольных версиях Chrome. Если вы не заметили этого на Mac, я подозреваю, что это связано с тем, что ваша установка Chrome на этом Mac не была обновлена в то время, когда вы тестировали. (Обратите внимание, что ошибка появилась в релизной версии Chrome менее чем за месяц до того, как вы задали этот вопрос.)
Тот же вопрос в stackoverflow.com/questions/57551530/…
Отвечает ли это на ваш вопрос? Ввод текста очень маленький при наведении на предложение автозаполнения






Я не работаю в Windows, но вы пытались настроить таргетинг на метку и форму? Re: специфика css. Затем попробуйте автоматическое заполнение web-kit на всех
Если бы это было так просто! Добавил это в свой код, но не повезло.
На данный момент кажется, что в 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, и предлагаю другое исправление, но они все равно сделали это. С другой стороны, фиксация теперь публично реализует альтернативное исправление, так что, возможно, скоро мы также увидим принудительное изменение шрифта по умолчанию.
@MarkAmery есть идеи, когда это исправление будет выпущено?
У меня больше не работает на macOS Chrome версии 95. Причина, по которой Chrome удалил стили шрифтов автозаполнения, была связана с проблемой безопасности bugs.chromium.org/p/chromium/issues/detail?id=1035058. ::first-line был уловкой, чтобы обойти их первоначальное «исправление» с пластырем, но теперь они также исправили наш обходной путь. Следует отметить, что Chrome 96 будет поддерживать :autofillchromestatus.com/feature/5592445322526720, но я не уверен, в какой степени Chrome позволит нам стилизовать его.
Возвращаясь, чтобы сказать, что :autofill, к сожалению, не позволяет изменять размер шрифта (не проверял другие свойства шрифта).
попробуй это!
&:-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!
Хорошо, это окончательный ответ на проблему после всех этих лет! Единственное предостережение: вы должны повторить стили для семейства шрифтов, размера шрифта и веса шрифта.
Реализовано в январе 2021 года, и input:-webkit-autofill::first-line правильно работает в Chrome.
в моем случае не сработало
Как изменить стили автозаполнения 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>Это сработало для меня.
Спасибо за дополнительное примечание о display: flex. Это было ключом к решению проблемы для меня.
У меня такая же проблема. Мне кажется, это ошибка в Chrome. Я решил поместить все свои поля ввода, которые постоянно меняли ширину, в контейнеры flexbox, чтобы сохранить стабильную ширину в качестве временного обходного пути.