Poniższy prosty kod HTML wyświetla się inaczej w przeglądarkach Firefox i WebKit (sprawdziłem w Safari, Chrome i iPhone).
W przeglądarce Firefox zarówno obramowanie, jak i tekst mają ten sam kolor ( #880000
), ale w Safari tekst staje się nieco jaśniejszy (tak, jakby zastosowano do niego trochę przezroczystości).
Czy mogę to jakoś naprawić (usunąć tę przezroczystość w 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>
Odpowiedzi:
-webkit-text-fill-color: #880000; opacity: 1; /* required on iOS */
źródło
1
na Mobile Safari.opacity:1
jest również konieczne.placeholder
tekstu, kolorinput
elementu. Jeśli będziesz potrzebować poprawki, spójrz na ten link: css-tricks.com/almanac/selectors/p/placeholderPrzeglądarki webkit na telefonach i tabletach (Safari i Chrome) oraz IE na komputerach stacjonarnych mają szereg domyślnych zmian w wyłączonych elementach formularzy, które należy nadpisać, jeśli chcesz nadać styl wyłączonym wejściom.
-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 */
źródło
to interesujące pytanie i próbowałem wielu zastąpień, aby sprawdzić, czy uda mi się je uruchomić, ale nic nie działa. Nowoczesne przeglądarki używają własnych arkuszy stylów, aby powiedzieć elementom, jak mają się wyświetlać, więc może jeśli uda ci się wywęszyć arkusz stylów Chrome, zobaczysz, jakie style na nim wymuszają. Będę bardzo zainteresowany wynikiem, a jeśli go nie masz, spędzę trochę czasu na jego poszukiwaniu później, gdy będę miał trochę czasu do stracenia.
FYI,
opacity: 1!important;
nie zastępuje go, więc nie jestem pewien, czy to krycie.
źródło
Można zmienić kolor
#440000
tylko dla Safari, ale imho najlepszym rozwiązaniem byłoby nie do zmiany wyglądu przycisku w ogóle . Dzięki temu w każdej przeglądarce na każdej platformie będzie wyglądać tak, jak oczekują tego użytkownicy.źródło
AKTUALIZACJA 2019:
Łączenie pomysłów z tej strony w rozwiązanie typu „ustaw i zapomnij”.
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 */ }
źródło
Możesz użyć atrybutu tylko do odczytu zamiast atrybutu wyłączonego, ale wtedy będziesz musiał dodać klasę, ponieważ nie ma wejścia pseudoklasy: tylko do odczytu.
<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>
Pamiętaj, że wyłączone wejście i wejście tylko do odczytu to nie to samo. Dane wejściowe tylko do odczytu mogą mieć fokus i będą wysyłać wartości po przesłaniu. Spójrz na w3.org
źródło
dla @ryan
Chciałem, aby moje wyłączone pole wprowadzania wyglądało jak normalne. To jedyna rzecz, która działałaby w Safari Mobile.
-webkit-text-fill-color: rgba(0, 0, 0, 1); -webkit-opacity: 1; background: white;
źródło
Jeśli chcesz naprawić problem dla wszystkich wyłączonych wejść, możesz zdefiniować
-webkit-text-fill-color
tocurrentcolor
, abycolor
właściwość wejścia była używana.input[disabled] { -webkit-text-fill-color: currentcolor; }
Zobacz to skrzypce w Safari https://jsfiddle.net/u549yk87/3/
źródło
To pytanie jest bardzo stare, ale pomyślałem, że opublikuję zaktualizowane rozwiązanie webkit. Po prostu użyj następującego CSS:
input::-webkit-input-placeholder { color: #880000; }
źródło
-webkit-text-fill-color
) działa jednakCzy zamiast wejścia można użyć przycisku?
<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>
źródło