Отключен цвет ввода текста

Приведенный ниже простой HTML-код по-разному отображается в браузерах на основе Firefox и WebKit (я проверял в Safari, Chrome и iPhone).

В Firefox и рамка, и текст имеют одинаковый цвет (#880000), но в Safari текст становится немного светлее (как если бы к нему была применена некоторая прозрачность).

Можно как-то это исправить (убрать прозрачность в Safari)?

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <style type = "text/css">
        input:disabled{
            border:solid 1px #880000;
            background-color:#ffffff;
            color:#880000;
        }
        </style>
    </head>
    <body>
        <form action = "">
            <input type = "text" value = "disabled input box" disabled = "disabled"/>
        </form>
    </body>
</html>

Я также заметил это, для меня это ошибка, поскольку, когда вы вводите background-color: white ввода, он снова будет правильно отображать цвет. Также непрозрачность мало влияет. Хотя -webkit-text-fill-color: # 880000 будет работать

Miguel 06.04.2018 15:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
101
1
80 081
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Можете ли вы использовать кнопку вместо ввода?

<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <style type = "text/css">
    button:disabled{
        border:solid 1px #880000;
        background-color:#ffffff;
        color:#880000;
    }
    </style>
</head>
<body>
    <form action = "">
        <button type = "button" disabled = "disabled">disabled input box</button>
    </form>
</body>
</html>

не совсем ... в моем реальном приложении эти текстовые поля обычно включены и используются для ввода, и только при определенных условиях они отключаются с помощью JavaScript, я могу найти обходной путь (например, заменить <input /> на стилизованный <div> < / div> вместо установки 'disabled') - но это действительно неправильно

Incidently 04.11.2008 21:35

это интересный вопрос, и я перепробовал множество переопределений, чтобы посмотреть, смогу ли я его запустить, но ничего не работает. Современные браузеры на самом деле используют свои собственные таблицы стилей, чтобы сообщать элементам, как отображать, так что, возможно, если вы сможете понюхать таблицу стилей Chrome, вы сможете увидеть, какие стили они навязывают ей. Меня очень заинтересует результат, и если у вас его нет, я потрачу немного времени на его поиски позже, когда у меня будет время, чтобы его терять.

К вашему сведению,

opacity: 1!important;

не отменяет его, поэтому я не уверен, что это непрозрачность.

Благодарность! Я не смог найти объяснения (ничего подобного в таблице стилей пользовательского агента Chrome - только «background-color: rgb (235, 235, 228)» для отключенных входов), и я использую обходной путь, но мне все еще интересно, что происходит на ...

Incidently 05.11.2008 20:33

Стив, спасибо за усилия, но я предлагаю в будущем публиковать это как комментарий, а не как ответ.

avernet 19.11.2010 21:49

Вы можете изменить цвет на #440000 только для Safari, но, IMHO, лучшим решением будет не к изменить внешний вид кнопки совсем. Таким образом, в каждом браузере на любой платформе он будет выглядеть так, как этого ожидают пользователи.

Вы можете использовать атрибут readonly вместо атрибута disabled, но тогда вам нужно будет добавить класс, потому что нет псевдокласса input: readonly.

<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type = "text/css">
button.readonly{
    border:solid 1px #880000;
    background-color:#ffffff;
    color:#880000;
}
</style>
</head>
<body>
<form action = "">
    <button type = "button" readonly = "readonly" class = "readonly">disabled input box</button>
</form>
</body>
</html>

Помните, что отключенный ввод и ввод только для чтения - это не одно и то же. Вход только для чтения может иметь фокус и отправлять значения при отправке. Посмотрите на w3.org

спасибо человек да, это была моя первая идея, но она не работает для меня из-за фокуса: на iPhone клавиатура выскакивает, когда пользователь нажимает элемент, доступный только для чтения, и это сбивает с толку, я нашел свой обходной путь, и мой вопрос скорее «теоретический» - почему такое поведение?

Incidently 05.11.2008 20:25

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

avernet 19.11.2010 21:51

Этот вопрос очень старый, но я подумал, что опубликую обновленное решение webkit. Просто используйте следующий CSS:

input::-webkit-input-placeholder {
  color: #880000;
}

а для Firefox используйте input: -moz-placeholder

stephan.com 28.12.2010 14:12

эх .. это для атрибута заполнителя, я не думаю, что это влияет на отключенные поля. Ответ @ Kemo ниже (-webkit-text-fill-color) работает, хотя

philfreo 12.05.2011 22:45
Ответ принят как подходящий
-webkit-text-fill-color: #880000;
opacity: 1; /* required on iOS */

Я хотел, чтобы мое отключенное поле ввода выглядело как обычное. Это единственное, что работает в Safari Mobile. -webkit-text-fill-color: rgba (0, 0, 0, 1); - цвет заливки текста: rgba (0, 0, 0, 1); -webkit-opacity: 1; фон: белый;

Ryan 03.11.2011 18:39

@Ryan прав - непрозрачность должна быть установлена ​​на 1 для Mobile Safari.

David Jones 14.04.2013 19:27

Это также необходимо в стандартном браузере Android.

istvan.halmen 13.02.2014 12:29
opacity:1 тоже нужен.
Marcel Falliere 05.08.2015 13:01

Непрозрачность не требуется в текущих сборках Safari, начиная с лета 2016 года.

Andy Mercer 29.07.2016 15:57

@AndyMercer - да, если вам не нужна блеклая версия цвета. особенно важно, если вам тоже нужен белый фон

Simon_Weaver 31.05.2017 05:12

Спас мой день! Тем не менее, это также влияет на окраску цвета текста placeholder элемента input. Если вам тоже понадобится исправить это, посмотрите эту ссылку: css-tricks.com/almanac/selectors/p/placeholder

Lentyai 14.08.2017 12:20

@Lentyai спасатель жизни! упомянуть, что мы должны использовать: placeholder-shown, чтобы помочь

Yao Zhao 10.05.2020 11:37

Браузеры webkit для телефонов и планшетов (Safari и Chrome) и IE для настольных ПК имеют ряд изменений по умолчанию для отключенных элементов формы, которые вам необходимо переопределить, если вы хотите стилизовать отключенные входы.

-webkit-text-fill-color:#880000; /* Override iOS / Android font color change */
-webkit-opacity:1; /* Override iOS opacity change affecting text & background color */
color:#880000; /* Override IE font color change */

для @ryan

Я хотел, чтобы мое отключенное поле ввода выглядело как обычное. Это единственное, что работает в Safari Mobile.

-webkit-text-fill-color: rgba(0, 0, 0, 1);
-webkit-opacity: 1;
background: white;

Если вы хотите решить проблему для всех отключенных входов, вы можете определить -webkit-text-fill-color в currentcolor, чтобы использовать свойство color входа.

input[disabled] {
   -webkit-text-fill-color: currentcolor;
}

Смотрите эту скрипку в Safari https://jsfiddle.net/u549yk87/3/

ОБНОВЛЕНО 2019:

Объединение идей с этой страницы в решение «установил и забыл».

input:disabled, textarea:disabled, input:disabled::placeholder, textarea:disabled::placeholder {
  -webkit-text-fill-color: currentcolor; /* 1. sets text fill to current `color` for safari */
  opacity: 1; /* 2. correct opacity on iOS */
}

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