CSS Selector สำหรับ <input type =“?”


106

มีวิธีใดบ้างที่ CSS จะกำหนดเป้าหมายอินพุตทั้งหมดตามประเภท ฉันมีคลาสปิดการใช้งานที่ฉันใช้กับองค์ประกอบฟอร์มที่ปิดใช้งานต่างๆและฉันกำลังตั้งค่าสีพื้นหลังสำหรับกล่องข้อความ แต่ฉันไม่ต้องการให้ช่องทำเครื่องหมายของฉันได้รับสีนั้น

ฉันรู้ว่าฉันสามารถทำได้โดยแยกชั้นเรียน แต่ฉันควรใช้ CSS ถ้าเป็นไปได้ ฉันแน่ใจว่าฉันสามารถตั้งค่านี้ใน javascript ได้ แต่กำลังมองหา CSS อีกครั้ง

ฉันกำหนดเป้าหมาย IE7 + ฉันไม่คิดว่าฉันจะใช้ CSS3 ได้

แก้ไข

ด้วย CSS3 ฉันจะทำอะไรได้บ้าง?

INPUT[type='text']:disabled นั่นจะเป็นการดีกว่าที่จะกำจัดชั้นเรียนของฉันโดยสิ้นเชิง ...

แก้ไข

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

INPUT[disabled][type='text'], TEXTAREA[disabled]
{   
    background-color: Silver;
}

ใช้งานได้ใน IE7


2
ฉันได้เขียนบทความที่มีข้อมูลโดยละเอียดเกี่ยวกับตัวเลือกแอตทริบิวต์ CSS
Sarfraz

คำตอบ:


157

ใช่. IE7 + รองรับตัวเลือกแอตทริบิวต์:

input[type=radio]
input[type^=ra]
input[type*=d]
input[type$=io]

อินพุตองค์ประกอบที่มีประเภทแอตทริบิวต์ซึ่งมีค่าที่เท่ากับเริ่มต้นด้วยประกอบด้วยหรือลงท้ายด้วยค่าที่แน่นอน

ตัวเลือกอื่น ๆ ที่ปลอดภัย (IE7 +) ได้แก่ :

  • ผู้ปกครอง> เด็กที่มี: p > span { font-weight: bold; }
  • นำหน้าด้วยองค์ประกอบ ~ ซึ่ง ได้แก่ : span ~ span { color: blue; }

ซึ่ง<p><span/><span/></p>จะช่วยให้คุณ:

<p>
    <span style="font-weight: bold;">
    <span style="font-weight: bold; color: blue;">
</p>

อ่านเพิ่มเติม: ความเข้ากันได้ของเบราว์เซอร์ CSS บน quirksmode.com

ฉันแปลกใจที่คนอื่นคิดว่ามันทำไม่ได้ ตัวเลือกแอตทริบิวต์ CSS อยู่ที่นี่มาระยะหนึ่งแล้ว ฉันเดาว่าถึงเวลาที่เราจะล้างไฟล์. css ของเรา


โอเคฉันได้ลองแล้ว แต่ตอนนี้ใช้งานไม่ได้ดังนั้นฉันต้องทำให้ไวยากรณ์ของฉันยุ่งเหยิง
JoshBerke

คุณทำให้วันนี้ดี! ตอนนี้ถ้าคุณต้องการทำให้สัปดาห์ของฉันบอกฉันว่าสามารถทำได้ใน IE6 โดยไม่ต้องใช้ Expressions hehe :-) j / k มี
JoshBerke

13
น่าเสียดายที่ทำไม่ได้ ฉันหยุดสนับสนุน IE6 จากมุมมองทางศาสนาและแนะนำให้เราทุกคนทำเช่นกัน วันนี้ฉันใช้ความคิดเห็นตามเงื่อนไขของ IE เพื่อบอกผู้ใช้ว่าคอมพิวเตอร์และความเป็นส่วนตัวของพวกเขามีความเสี่ยงในการใช้ IE6 และพวกเขาควรอัปเกรดทันที: P
Filip Dupanović

1
ฉันเดาว่าฉันคุ้นเคยกับการสนับสนุน IE6 ฉันแค่คิดว่ามันจะไม่ทำงานใน IE7 เช่นกัน
TJ L

4
ฉันหวังว่าฉันจะหยุดสนับสนุน IE6 แต่ทำไม่ได้และทำไม่ได้ตามที่คุณแนะนำ ... แต่ฉันหวังว่าจะทำได้จริงๆ ;-)
JoshBerke

3

น่าเศร้าที่ผู้โพสต์อื่น ๆ ถูกต้องว่าคุณ ... จริงแล้วตามที่แก้ไขโดย kRON คุณก็โอเคกับ IE7 และเอกสารที่เข้มงวด แต่พวกเราส่วนใหญ่ที่มีข้อกำหนด IE6 จะลดลงเป็น JS หรือการอ้างอิงคลาสสำหรับสิ่งนี้ แต่ก็เป็นเช่นนั้นคุณสมบัติ CSS2 เพียงหนึ่งเดียวโดยไม่ต้องรองรับเบราว์เซอร์ IE ^ h ^ h อย่างเพียงพอ

ตัวเลือกประเภทไม่สมบูรณ์ - คล้ายกับ xpath - ของแบบฟอร์ม[attribute=value]แต่มีตัวแปรที่น่าสนใจมากมาย มันจะมีประสิทธิภาพมากเมื่อมันพร้อมใช้งานสิ่งที่ดีที่ควรเก็บไว้ในหัวของคุณสำหรับ IE8


คุณมีข้อมูลอ้างอิงการสนับสนุนเบราว์เซอร์ที่อัปเดตเพิ่มเติมหรือไม่? ที่ขึ้นอยู่กับ IE7 beta อยากเห็น IE8
JoshBerke

IE8 ยังอยู่ในรุ่นเบต้า แต่โหมดเล่นโวหารบอกว่า "ใช่": quirksmode.org/css/contents.html
annakata

ฉันยังคงรองรับ IE6 เพียงแค่ไม่ได้เพิ่มการปรับแต่งภาพเล็ก ๆ
JoshBerke

มันเป็นความผิดพลาดของฉันที่จะตอบตามชื่อเรื่องฉันมักจะตอบกรณีทั่วไป - ฉันควรอ่านคำถามมากกว่านี้ :)
annakata

1

คุณสามารถทำได้ด้วย jQuery เมื่อใช้ตัวเลือกคุณสามารถเลือกตามแอตทริบิวต์เช่นประเภท อย่างไรก็ตามสิ่งนี้ต้องการให้ผู้ใช้ของคุณเปิด Javascript และต้องดาวน์โหลดไฟล์เพิ่มเติม แต่ถ้ามันใช้งานได้ ...


0

ขออภัยคำตอบสั้น ๆ คือไม่ CSS (2.1) จะมาร์กอัปเฉพาะองค์ประกอบของ DOM เท่านั้นไม่ใช่แอตทริบิวต์ คุณจะต้องใช้คลาสเฉพาะกับแต่ละอินพุต

ฉันรู้เพราะนั่นจะมีประโยชน์อย่างไม่น่าเชื่อ

ฉันรู้ว่าคุณบอกว่าคุณต้องการ CSS มากกว่า JavaScript แต่คุณควรพิจารณาใช้ jQuery เป็นวิธีที่สะอาดและสวยงามมากในการเพิ่มสไตล์ให้กับองค์ประกอบ DOM ตามแอตทริบิวต์


jquery เป็นวิธีการทำเช่นนี้หรือเพียงแค่ JavaScript โดยทั่วไป
TravisO

4
AFAICT คำตอบนี้ไม่ถูกต้อง (CSS ที่ 2.1 ส่วน): w3.org/TR/CSS21/selector.html#attribute-selectors ถ้าไม่เช่นนั้นโปรดชี้แจงคุณตอบ
cic

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