iOS บังคับให้มุมโค้งมนและแสงสะท้อนที่อินพุต


95

อุปกรณ์ iOS เพิ่มรูปแบบที่น่ารำคาญมากมายให้กับอินพุตแบบฟอร์มโดยเฉพาะอย่างยิ่งในอินพุต [type = submit] ที่แสดงด้านล่างนี้เป็นรูปแบบการค้นหาทั่วไปแบบเดียวกันบนเบราว์เซอร์เดสก์ท็อปและบน iPad

เดสก์ทอป:

เดสก์ทอป

iPad:

iPad

อินพุต [type = text] ใช้เงาแทรกกล่อง CSS และฉันยังระบุ -webkit-border-radius: none; ซึ่งดูเหมือนจะถูกลบล้าง สีและรูปร่างของปุ่ม [type = submit] อินพุตของฉันถูกทำลายอย่างสมบูรณ์บน iPad มีใครรู้บ้างว่าฉันจะแก้ไขปัญหานี้ได้อย่างไร ขอบคุณล่วงหน้า.


4
-webkit- ลักษณะ: ไม่มี; ช่วยขจัดปัญหาส่วนใหญ่ แต่ก็ยังไม่สามารถขจัดช่องว่างระหว่างองค์ประกอบทั้งสองหรือมุมโค้งมนได้ ดังนั้นความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม ขอบคุณ.
inorganik

2
คุณระบุ-webkit-border-radius:none;คุณระบุborder-radius:none;?
Rigel Glen

7
ระบุ-webkit-appearance:noneและ-webkit-border-radius:0ทำเคล็ดลับบน iOS ให้ฉัน!
Primus202

คำตอบ:


185

เวอร์ชันที่ฉันใช้งานได้คือ:

input {
    -webkit-appearance: none;
}

ในเบราว์เซอร์ Webkit บางเวอร์ชันคุณอาจต้องเผชิญกับปัญหาที่border-radiusยังคงอยู่ รีเซ็ตด้วยสิ่งต่อไปนี้:

input {
    -webkit-border-radius:0; 
    border-radius:0;
}

นี้สามารถขยายไปใช้กับทุกสไตล์ WebKit formส่วนประกอบเช่นinput, select, หรือbuttontextarea

ในการอ้างอิงคำถามเดิมคุณจะไม่ใช้ค่า 'none' เมื่อล้างองค์ประกอบ css ตามหน่วยใด ๆ นอกจากนี้ยังทราบว่าหนังเรื่องนี้ช่องทำเครื่องหมายใน Chrome ดังนั้นบางทีใช้สิ่งที่ต้องการinput[type=text]หรือหรือแทนกรองผู้ที่ไม่ได้ใช้การตั้งค่ามุมโค้งมนเช่นinput[type=submit], input[type=text]input:not([type=checkbox]), input:not([type=radio])


5
-webkit- ลักษณะ: ไม่มี; ซ่อนช่องทำเครื่องหมายใน Chrome - ไม่ใช่วิธีแก้ปัญหาที่ถูกต้อง!
Nico Westerdale

2
-webkit- ลักษณะ: ไม่มี; เคล็ดลับ! (ไม่จำเป็นต้องใช้ -webkit-border-radius)
OZZIE

จุดดี - ขึ้นอยู่กับเวอร์ชันของเบราว์เซอร์ที่ฉันพบดังนั้นนั่นคือสิ่งที่อยู่ในนั้นเพื่อความปลอดภัย ฉันจะแก้ไขโพสต์ตามความเกี่ยวข้อง
markyzm

3
input: not ([type = "checkbox"]) จะเป็นวิธีที่ดีกว่าในการหลีกเลี่ยงปัญหาใน Chrome หรือไม่ แม้ว่าจะไม่สามารถใช้งานได้ใน IE <= 8 แต่อีกครั้งนั่นไม่ใช่สิ่งที่คุณกำลังพยายามแก้ไข
Robin French

การใช้input:not([type=checkbox]), input:not([type=radio])หมายความว่าสไตล์นี้ใช้กับปุ่มทั้งหมดบน Safari เนื่องจากทุกปุ่มเป็นไปตามเงื่อนไขข้อใดข้อหนึ่งจากสองเงื่อนไขนั้น แต่ฉันใช้input[type=submit], input[type=text].
miguelmorin

17

คุณสามารถกำจัดรูปแบบ webkits อินพุตและอื่น ๆ ได้ด้วยสิ่งนี้:

input, textarea, select {
   -webkit-appearance: none;
}

มันยังคงต้องborder-radius: 0;รีเซ็ตทั้งหมดและไม่ต้องการรัศมีขอบ อื่นเพียงแค่ตั้งค่าborder-radius.
Refilon

3

สำหรับปุ่มส่งอย่าใช้:

<input type="submit" class="yourstylehere" value="submit" />

ใช้แท็กปุ่มแทน:

<button type="submit" class="yourstylehere">Submit</button>

สิ่งนี้ได้ผลสำหรับฉัน


1
FWIW เพิ่งมีปัญหานี้ในโครงการและ iPad 1 ที่ฉันกำลังทดสอบก็เพิ่มสไตล์ให้กับ<button>แท็กด้วย ดังนั้นฉันคิดว่าคุณควรแก้ปัญหานี้ด้วย CSS โดยตรงดีกว่า
neemzy

1

ดูเพื่อnormalize.css

มีการสาธิตที่คุณสามารถทดสอบองค์ประกอบแบบฟอร์มและดูว่ามีลักษณะอย่างไรใน iOS มีคุณสมบัติเชิง webkit หลายรายการ


1

นี่คือสิ่งที่ฉันใช้ในโครงการของฉัน

* { 
    -webkit-tap-highlight-color: transparent; 
}
a, article, div, h1, h2, h3, h4, h5, h6, img, section, span {
    -moz-user-select: none; 
    -webkit-user-select: none; 
}
input, select, textarea { 
    -webkit-appearance: none; 
    -webkit-border-radius:0; 
    border-radius: 0; 
}

0

นอกจากนี้คุณยังพบปัญหานี้ในบางเบราว์เซอร์หากคุณมีสิ่งต่อไปนี้:

<a class="btn btn-primary" href="#" type="button">Link</a>

แทน:

<a class="btn btn-primary" href="#" role="button">Link</a>

นี้สามารถเกิดขึ้นได้ถ้าคุณเปลี่ยนองค์ประกอบเข้าของคุณสำหรับองค์ประกอบ Anker และลืมที่จะเปลี่ยนไปtyperole

ฉันมีปัญหานี้ทั้งบน Chrome และ Safari บน iPad ของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.