В форме, над которой я работаю, Chrome автоматически заполняет поля электронной почты и пароля. Это нормально, однако Chrome меняет цвет фона на бледно-желтый.
В дизайне, над которым я работаю, используется светлый текст на темном фоне, так что это действительно портит внешний вид формы - у меня резкие желтые прямоугольники и почти невидимый белый текст. Как только поле сфокусировано, поля возвращаются в нормальное состояние.
Можно ли остановить Chrome, изменяя цвет этих полей?
autocomplete
input
google-chrome
DisgruntledGoat
источник
источник
Ответы:
Это прекрасно работает, вы можете изменить стили ввода поля, а также стили текста внутри поля ввода:
Здесь вы можете использовать любой цвет , например
white
,#DDD
,rgba(102, 163, 177, 0.45)
.Но
transparent
здесь не сработает.Кроме того, вы можете использовать это, чтобы изменить цвет текста:
Совет: не используйте чрезмерный радиус размытия сотнями или тысячами. Это бесполезно и может привести к загрузке процессора на более слабых мобильных устройствах. (Также верно для реальных внешних теней). Для обычного поля ввода высотой 20px «радиус размытия» 30px будет его полностью охватывать.
источник
:-internal-autofill-previewed
и:-internal-autofill-selected
псевдоклассы вместо-webkit-autofill
... Таинственно, однако,-webkit-autofill
все еще работает. Мне лично это не нужно!important
.Предыдущие решения по добавлению рамки-тени хорошо работают для людей, которым нужен однотонный фон. Другое решение добавления перехода работает, но необходимость установить длительность / задержку будет означать, что в какой-то момент он может появиться снова.
Мое решение состоит в том, чтобы вместо этого использовать ключевые кадры, чтобы они всегда отображали цвета по вашему выбору.
Пример Codepen: https://codepen.io/-Steve-/pen/dwgxPB
источник
color: inherit
У меня есть лучшее решение.
Установка фона на другой цвет, как показано ниже, не решила проблему для меня, потому что мне нужно прозрачное поле ввода
Итак, я попробовал некоторые другие вещи, и я придумал это:
источник
-webkit-text-fill-color: yellow !important;
цвет текста.display
. Скрипка - Проверьте этоtransition-duration
смехотворно высоко, было бы лучше установитьtransition-delay
вместо этого. Таким образом вы еще больше уменьшаете возможность любых изменений цвета.transition
Хак будет работать только , если вход не заполняется автоматически при записи по умолчанию , записанной в браузере, в противном случае желтый фон все еще будет там.background-color
не работает? Хром должен это исправить !!Это мое решение, я использовал переход и задержку перехода, поэтому у меня может быть прозрачный фон в моих полях ввода.
источник
box-shadow
для проверки"color 9999s ease-out, background-color 9999s ease-out";
это не валидное выражение. Тогда я использовал код,-webkit-transition: background-color 9999s ease-out;
и-webkit-text-fill-color: #fff !important;
box-shadow
проверкой? В моем случае из-за этого правила css моя пользовательская тень от красного поля (которая указывает на ошибку ввода) задерживается, заставляя пользователя поверить, что самый последний ввод неверен, хотя на самом деле это хорошо.Это было так, как задумано, так как это поведение окраски было от WebKit. Это позволяет пользователю понять, что данные были предварительно заполнены. Ошибка 1334
Вы можете отключить автозаполнение, выполнив (или на конкретном элементе управления формы:
Или вы можете изменить цвет автозаполнения, выполнив:
Обратите внимание, что для повторной работы отслеживается ошибка: http://code.google.com/p/chromium/issues/detail?id=46543
Это поведение WebKit.
источник
!important
и (b) задано значение идентификатора для большей специфичности. Похоже, что Chrome всегда собирается переопределить его. Удаление автозаполнения, кажется, работает, но на самом деле это не то, что я хочу сделать.autocomplete="off"
, безусловно, поднимет вопросы доступности. Почему этот ответ помечен как правильный?Возможный обходной путь на данный момент - установить «сильную» внутреннюю тень:
источник
попробуйте это для скрытия стиля автозаполнения
источник
Все вышеприведенные ответы сработали, но имели свои недостатки. Приведенный ниже код представляет собой объединение двух из приведенных выше ответов, которое работает без сбоев и не мигает.
источник
SASS
источник
После 2 часов поиска кажется, что Google все еще как-то перекрывает желтый цвет, но я за исправление. Вот так. это будет работать для парения, фокуса и т. д. все, что вам нужно сделать, это добавить! важно к этому.
это полностью удалит желтый из полей ввода
источник
Добавление задержки на один час приостановит любые изменения CSS на элементе input.
Это лучше, чем добавлять анимацию перехода или внутреннюю тень.
источник
В добавок к этому:
Вы также можете добавить
В противном случае, когда вы нажмете на вход, желтый цвет вернется. Для фокуса, если вы используете загрузчик, вторая часть предназначена для выделения рамки 0 0 8px rgba (82, 168, 236, 0.6);
Такой, что он будет выглядеть как любой ввод начальной загрузки.
источник
У меня была проблема, когда я не мог использовать box-shadow, потому что мне нужно, чтобы поле ввода было прозрачным. Это что-то вроде хака, но чистый CSS. Установите переход на очень длительное время.
источник
transition-duration
смехотворно высоко, было бы лучше установитьtransition-delay
вместо этого. Таким образом вы еще больше уменьшаете возможность любых изменений цвета.Попробуйте это: То же, что @ Nathan-white, ответ выше с небольшими изменениями.
источник
Если вы хотите сохранить функциональность автозаполнения без изменений, вы можете использовать немного jQuery для удаления стилей Chrome. Я написал небольшой пост об этом здесь: http://www.benjaminmiles.com/2010/11/22/fixing-google-chromes-yellow-autocomplete-styles-with-jquery/
источник
Я разработал другое решение с использованием JavaScript без JQuery. Если вы сочтете это полезным или решите повторно опубликовать мое решение, я прошу вас указать только мое имя. Наслаждаться. - Дэниел Фэйрвезер
Этот код основан на том факте, что Google Chrome удаляет стиль Webkit, как только вводится дополнительный текст. Простого изменения значения поля ввода недостаточно, Chrome хочет событие. Сосредоточив внимание на каждом поле ввода (текст, пароль), мы можем отправить событие клавиатуры (буква «а»), а затем установить текстовое значение в его предыдущее состояние (автоматически заполненный текст). Имейте в виду, что этот код будет запускаться в каждом браузере и проверять каждое поле ввода на веб-странице, настраивая его в соответствии с вашими потребностями.
источник
У меня есть чистое решение CSS, которое использует фильтры CSS.
Фильтр оттенков серого заменяет желтый на серый, затем яркость удаляет серый.
СМОТРЕТЬ КОДЕПЕН
источник
Это будет работать для ввода, текстовой области и выбора в нормальном, наведении, фокусе и активном состоянии.
Вот версия SCSS вышеупомянутого решения для тех, кто работает с SASS / SCSS.
источник
Для тех, кто использует компас:
источник
Я сдаюсь!
Поскольку невозможно изменить цвет ввода с помощью автозаполнения, я решил отключить их все с помощью jQuery для браузеров webkit. Нравится:
источник
У меня есть решение, если вы хотите запретить автозаполнение в Google Chrome, но это немного «мачете», просто удалите класс, который Google Chrome добавляет в эти поля ввода, и установите значение «», если вам не нужно показывать хранить данные после загрузки.
источник
Решение Даниэля Фэйрвезера ( Удаление входного цвета фона для автозаполнения Chrome? ) (Я бы хотел поддержать его решение, но все еще нужно 15 повторений) работает действительно хорошо. Существует большая разница с большинством проголосовавших решений: вы можете сохранить фоновые изображения! Но небольшая модификация (только проверка Chrome)
И вы должны иметь в виду, это работает только на видимых полях !
Таким образом, если вы используете $ .show () для своей формы, вам нужно запустить этот код после события show ()
Мое полное решение (у меня есть кнопки показать / скрыть форму входа):
Извините еще раз, я бы предпочел, чтобы это был комментарий.
Если хотите, я могу поставить ссылку на сайт, где я его использовал.
источник
и это сработало для меня (Chrome 76 протестирован)
источник
Я перепробовал почти все вышеперечисленные решения. У меня ничего не работает. Наконец-то работал с этим решением. Я надеюсь, что кто-то поможет этому.
источник
Спасибо, Бенджамин!
Решение Mootools немного сложнее, так как я не могу получить поля с помощью
$('input:-webkit-autofill')
, поэтому я использовал следующее:источник
Ни одно из решений не сработало для меня, теневая вставка не сработает для меня, потому что входные данные имеют полупрозрачный фон, наложенный поверх фона страницы.
Поэтому я спросил себя: «Как Chrome определяет, что нужно заполнить на данной странице?»
"Он ищет входные идентификаторы, входные имена? Идентификаторы форм? Действие форм?"
Благодаря моим экспериментам с вводом имени пользователя и пароля, я обнаружил только два способа, которые привели бы к тому, что Chrome не смог найти поля, которые должны быть заполнены автоматически:
1) Поставьте ввод пароля перед вводом текста. 2) Дайте им одно и то же имя и идентификатор ... или вообще без имени и идентификатора.
После загрузки страницы с помощью javascript вы можете либо динамически изменять порядок входов на странице, либо динамически присваивать им их имя и идентификатор ...
И Chrome не знает, что попало в него ... автозаполнение не работает!
Сумасшедший хак, я знаю. Но это работает для меня.
Chrome 34.0.1847.116, OSX 10.7.5
источник
К сожалению, строго ни одно из вышеперечисленных решений не помогло мне в 2016 году (через пару лет после вопроса)
Итак, вот агрессивное решение, которое я использую:
По сути, он удаляет тег при сохранении значения и воссоздает его, а затем возвращает значение.
источник
Я использую это. работать на меня. удалить желтый фон поля.
источник
Как упоминалось ранее, для меня лучше всего подходит inset -webkit-box-shadow.
Также фрагмент кода для изменения цвета текста:
источник
Это сработало для меня:
источник