ปิดใช้งานสีข้อความที่ป้อน


95

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>

ฉันสังเกตเห็นสิ่งนี้เช่นกันสำหรับฉันนี่คือข้อบกพร่องเนื่องจากเมื่อคุณใส่สีพื้นหลัง: สีขาวของอินพุตมันจะแสดงสีอีกครั้งอย่างถูกต้อง ความทึบยังมีผลเพียงเล็กน้อย แม้ว่า -webkit-text-fill-color: # 880000 จะใช้งานได้
Miguel

คำตอบ:


239
-webkit-text-fill-color: #880000;
opacity: 1; /* required on iOS */

51
ฉันต้องการให้ช่องป้อนข้อมูลที่ปิดใช้งานของฉันดูเหมือนกล่องปกติ นี่เป็นสิ่งเดียวที่ใช้ได้ใน Safari Mobile -webkit-text-fill-color: rgba (0, 0, 0, 1); -webkit-opacity: 1; พื้นหลัง: ขาว;
Ryan

11
@Ryan ถูกต้อง - ต้องตั้งค่าความทึบเป็น1สำหรับ Mobile Safari
David Jones

7
opacity:1ก็จำเป็นเช่นกัน
Marcel Falliere

3
ไม่จำเป็นต้องมีความทึบในรุ่นปัจจุบันของ Safari ในช่วงฤดูร้อนปี 2016
Andy Mercer

2
บันทึกวันของฉัน! แต่ยังมีผลต่อการระบายสีสีplaceholderข้อความของinputองค์ประกอบ ในกรณีที่คุณต้องการการแก้ไขเช่นกันดูที่ลิงค์นี้: css-tricks.com/almanac/selectors/p/placeholder
Lentyai

43

เบราว์เซอร์ 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 */

6

เป็นคำถามที่น่าสนใจและฉันได้ลองใช้การลบล้างมากมายเพื่อดูว่าฉันจะไปได้ไหม แต่ไม่มีอะไรได้ผล เบราว์เซอร์สมัยใหม่ใช้สไตล์ชีตของตัวเองเพื่อบอกองค์ประกอบต่างๆว่าจะแสดงอย่างไรดังนั้นบางทีถ้าคุณสามารถสูดดมสไตล์ชีทของ Chrome ได้คุณจะเห็นว่าพวกเขาบังคับใช้สไตล์ใด ฉันจะสนใจในผลลัพธ์มากและถ้าคุณไม่มีฉันจะใช้เวลาเล็กน้อยเพื่อหามันในภายหลังเมื่อฉันมีเวลาที่จะเสียไป

FYI,

opacity: 1!important;

ไม่ได้ลบล้างดังนั้นฉันไม่แน่ใจว่ามันทึบ


ขอบคุณ! ฉันไม่พบคำอธิบาย (ไม่มีอะไรเหมือนในสไตล์ชีตตัวแทนผู้ใช้ของ Chrome - เฉพาะ "background-color: rgb (235, 235, 228)" สำหรับอินพุตที่ปิดใช้งาน) และฉันกำลังใช้วิธีแก้ปัญหา แต่ก็ยังสงสัยว่าจะเกิดอะไรขึ้น เมื่อวันที่ ...
บังเอิญ

สตีฟขอบคุณสำหรับความพยายาม แต่ฉันขอแนะนำให้คุณโพสต์สิ่งนี้เป็นความคิดเห็นแทนที่จะเป็นคำตอบในอนาคต
avernet

6

คุณสามารถเปลี่ยนสีเป็น #440000เพียงสำหรับ Safari แต่ IMHO ทางออกที่ดีที่สุดจะเป็นไม่ได้ที่จะเปลี่ยนลักษณะของปุ่มที่ทุกคน วิธีนี้ในทุกเบราว์เซอร์ในทุกแพลตฟอร์มจะมีลักษณะเหมือนที่ผู้ใช้คาดหวัง


6

ปรับปรุง 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 */
}

4

คุณสามารถใช้แอตทริบิวต์แบบอ่านอย่างเดียวแทนแอตทริบิวต์ที่ปิดใช้งานได้ แต่คุณจะต้องเพิ่มคลาสเนื่องจากไม่มีอินพุตคลาสหลอก: อ่านอย่างเดียว

<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

วิธีแก้ปัญหาที่น่าสนใจ: ปัญหาโฟกัสยังก่อให้เกิดปัญหาในการใช้งานโดยเฉพาะอย่างยิ่งสำหรับผู้ที่ใช้โปรแกรมอ่านหน้าจอ ในกรณีส่วนใหญ่คุณไม่ต้องการให้ผู้ใช้สามารถแท็บเพื่ออ่านฟิลด์แบบอ่านอย่างเดียว / ปิดใช้งานในแบบฟอร์ม
avernet

4

สำหรับ @ryan

ฉันต้องการให้ช่องป้อนข้อมูลที่ปิดใช้งานของฉันดูเหมือนกล่องปกติ นี่เป็นสิ่งเดียวที่ใช้ได้ใน Safari Mobile

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

3

หากคุณต้องการแก้ไขปัญหาสำหรับอินพุตที่ปิดใช้งานทั้งหมดคุณสามารถกำหนด-webkit-text-fill-colorเป็นcurrentcolorดังนั้นcolorคุณสมบัติของอินพุตจะถูกใช้

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

ดูซอใน Safari https://jsfiddle.net/u549yk87/3/


2

คำถามนี้เก่ามาก แต่ฉันคิดว่าจะโพสต์โซลูชัน webkit ที่อัปเดตแล้ว เพียงใช้ CSS ต่อไปนี้:

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

3
และสำหรับ Firefox ให้ใช้ input:
-moz

1
เอ๊ะ .. นี่คือแอตทริบิวต์ตัวยึดตำแหน่งฉันไม่คิดว่าจะมีผลกับฟิลด์ที่ปิดใช้งาน คำตอบของ @ Kemo ด้านล่าง ( -webkit-text-fill-color) ใช้ได้ผล
philfreo

0

คุณสามารถใช้ปุ่มแทนอินพุตได้หรือไม่?

<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> แทนของการตั้งค่า 'คนพิการ') - แต่มันรู้สึกผิด
Incidently
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.