“ i” หมายความว่าอย่างไรในตัวเลือกแอตทริบิวต์ CSS


112

ฉันพบตัวเลือก CSS ต่อไปนี้ในสไตล์ชีตตัวแทนผู้ใช้ของ Google Chrome:

[type="checkbox" i]

อะไรiหมายถึง?


1
@Alexander O'Mara: Selectors ระดับ 4 เป็นส่วนหนึ่งของ CSS3 - เป็นเพียงระดับถัดไปของโมดูลที่เริ่มต้นที่ระดับ 3 "CSS4" เป็นชื่อที่ผิด
BoltClock

2
@ Alexander O'Mara: ฉันชอบที่จะเห็นมันขึ้นมาในเมตา โดยเฉพาะอย่างยิ่งฉันต้องการทราบว่าเราจะจัดการกับการใช้แท็ก [css4] ได้อย่างไร - มาตรการที่รุนแรงที่สุดที่ฉันทำได้คือทำให้เป็นคำพ้องความหมายของ [css3] และนั่นก็เป็นสิ่งที่ถูกต้อง
BoltClock

1
@BoltClock Meta คำถามขึ้น! BTW เมื่อคุณถามเกี่ยวกับการรวมคำตอบของคุณเข้ากับคำถามนี้คุณหมายถึงแก้ไขคำถาม / คำตอบที่นี่เพื่อเพิ่มข้อมูลหรือคุณกำลังอ้างถึงปุ่มย้ายคำตอบสำหรับคำถามอื่นอย่างมหัศจรรย์?
Alexander O'Mara

1
@ อเล็กซานเดอร์โอมารา: ไม่ย้ายคำตอบแต่ละข้อ แต่รวมคำถามทั้งหมดสองข้อ เป็นฟังก์ชันเฉพาะ mod
BoltClock

1
@TylerH เรามีการอภิปรายเกี่ยวกับ Meta ในหัวข้อนี้ อย่าลังเลที่จะเพิ่มการสนทนาที่นั่น
Alexander O'Mara

คำตอบ:


132

ดังที่ได้กล่าวไว้ในความคิดเห็นสำหรับการจับคู่แอตทริบิวต์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ นี่เป็นคุณสมบัติใหม่ใน CSS Selectors ระดับ 4

ปัจจุบันมีให้บริการใน Chrome 49+, Firefox 47+, Safari 9+ และ Opera 37 + * ก่อนหน้านี้มีให้บริการเฉพาะในรูปแบบ User-agent ของ Chrome ที่เริ่มต้นจาก Chrome 39 แต่สามารถเปิดใช้งานสำหรับเนื้อหาเว็บได้โดยตั้งค่าสถานะคุณลักษณะทดลอง

* Opera เวอร์ชันก่อนหน้านี้อาจรองรับด้วย

ตัวอย่างการทำงาน / การทดสอบเบราว์เซอร์:

[data-test] {
    width: 100px;
    height: 100px;
    margin: 4px;
}

[data-test="A"] {
    background: red;
}

[data-test="a" i] {
    background: green;
}
Green if supported, red if not:

<div data-test="A"></div>

ช่องสี่เหลี่ยมด้านบนจะเป็นสีเขียวหากเบราว์เซอร์รองรับคุณสมบัตินี้หากไม่เป็นสีแดง


6
ขอบคุณสำหรับการสอน! สนุกกับหมวกใบใหม่ของคุณ สิ่งนี้ทำงานในไลบรารีตัวเลือกหรือไม่? มีการรองรับเบราว์เซอร์ประเภทใดบ้าง?
Benjamin Gruenbaum

1
@BenjaminGruenbaum ดูเหมือนว่าจะใช้ได้เฉพาะในรูปแบบ User-agent ของ Chrome เท่านั้น (ไม่ใช่ CSS ของเว็บไซต์อย่างน้อยก็ยังไม่มี) ฉันไม่พบเอกสารความเข้ากันได้อย่างเป็นทางการใด ๆ
Alexander O'Mara

(การโพสต์ความคิดเห็นก่อนหน้าของฉันใหม่ในตอนนี้เมื่อคำถามถูกรวมเข้าด้วยกัน) ไม่น่าแปลกใจเลยที่มาตรฐานการทดลองใหม่เอี่ยมเช่นนี้ได้รับการบันทึกไว้ไม่ดี ที่กล่าวว่าคำตอบของฉันมีข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้ ได้แก่ วิธีการทำงานเหตุใดจึงใช้และวิธีการใช้งานใน Chrome (ตามที่คำถามระบุ)
BoltClock

Chrome จะเพิ่มการรองรับสำหรับสิ่งนี้ในเวอร์ชัน 49.0 (ปัจจุบันเป็นเบต้า), Firefox ในเวอร์ชัน 47.0 (มีกำหนดเปิดตัวในเดือนมิถุนายน 2559) ที่มา: developer.mozilla.org/en-US/docs/Web/CSS/…
Miscreant

1
@LWChris: ฉันไม่แน่ใจว่ามีเบราว์เซอร์ดังกล่าวอยู่จริง IE6 ไม่เข้าใจตัวเลือกแอตทริบิวต์เลยและ IE7 รองรับแม้จะมีแอตทริบิวต์ข้อมูลที่กำหนดเอง
BoltClock

36

นั่นคือธงกรณีตายสำหรับแอตทริบิวต์เตอร์แนะนำในSelectors 4 เห็นได้ชัดว่าพวกเขาแอบนำคุณลักษณะนี้ไปใช้ใน Chrome ตั้งแต่ต้นเดือนสิงหาคม 2014

สรุป: แฟล็กนี้บอกเบราว์เซอร์ให้จับคู่ค่าตามลำดับสำหรับtypeแอตทริบิวต์ตัวพิมพ์เล็กและใหญ่ พฤติกรรมการจับคู่ตัวเลือกเริ่มต้นสำหรับค่าแอตทริบิวต์ใน HTML เป็นแบบตรงตามตัวพิมพ์เล็กและใหญ่ซึ่งมักไม่เป็นที่ต้องการเนื่องจากแอตทริบิวต์จำนวนมากถูกกำหนดให้มีค่าที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่และคุณต้องการให้แน่ใจว่าตัวเลือกของคุณเลือกองค์ประกอบที่ถูกต้องทั้งหมดโดยไม่คำนึงถึงกรณี typeเป็นตัวอย่างหนึ่งของเช่นแอตทริบิวต์เพราะมันเป็นคุณลักษณะที่ระบุและแอตทริบิวต์ที่ระบุจะกล่าวว่ามีค่ากรณีตาย

นี่คือการกระทำที่เกี่ยวข้อง:

  • 179370 - การนำไปใช้
  • 179401 - การเปลี่ยนแปลงสไตล์ชีท UA ดังที่แสดงในภาพหน้าจอในคำถาม

โปรดทราบว่าปัจจุบันซ่อนอยู่ในแฟล็ก "เปิดใช้คุณลักษณะแพลตฟอร์มเว็บรุ่นทดลอง" ซึ่งคุณสามารถเข้าถึงได้ที่ chrome: // flags / # enable-experiment-web-platform-features สิ่งนี้อาจอธิบายได้ว่าเหตุใดคุณลักษณะนี้จึงไม่มีใครสังเกตเห็นโดยส่วนใหญ่คุณลักษณะที่ซ่อนอยู่หลังแฟล็กนั้นสามารถใช้ได้เฉพาะภายในและไม่สามารถใช้ได้ในโค้ดที่เปิดเผยต่อสาธารณะ (เช่นสไตล์ชีตของผู้เขียน) เว้นแต่จะเปิดใช้งานเนื่องจากเป็นช่วงทดลองและดังนั้นจึงไม่พร้อมสำหรับการใช้งานจริง

นี่คือกรณีทดสอบที่คุณสามารถใช้ได้ - เปรียบเทียบผลลัพธ์เมื่อเปิดใช้งานและปิดใช้งานแฟล็ก:

span[data-foo="bar"] {
    color: red;
}

span[data-foo="bar" i] {
    color: green;
}
<span data-foo="bar">If all of this text is green,</span>
<span data-foo="Bar">your browser supports case-insensitive attribute selectors.</span>

โปรดทราบว่าฉันใช้แอตทริบิวต์ข้อมูลที่กำหนดเองแทนtypeเพื่อแสดงว่าสามารถใช้กับแอตทริบิวต์ใดก็ได้

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


ฉันมีอาการอ่อนเพลีย "บ่ายวันนั้น" ... หลังจากอ่านข้อมูลจำเพาะของ W3 แล้วฉันก็ยังไม่เข้าใจอย่างถ่องแท้ว่าการใช้งานจริงใน css สำหรับสิ่งนี้จะเป็นอย่างไร
Matt

2
@Matt: การจับคู่ตัวเลือกแอตทริบิวต์นั้นคำนึงถึงตัวพิมพ์เล็กและใหญ่ตามที่ระบุไว้ใน HTML5ซึ่งในหลาย ๆ กรณีไม่เป็นที่พึงปรารถนาเนื่องจาก HTML5 อนุญาตให้ใช้ค่าที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่สำหรับแอตทริบิวต์บางอย่าง คุณสามารถใช้แฟล็กนี้เพื่อให้แน่ใจว่าคุณเลือกองค์ประกอบที่ถูกต้องโดยไม่คำนึงถึงกรณี ยกตัวอย่างเช่นในภาพที่คุณสามารถดูว่ามันจะมองหาซึ่งจะตรงกับองค์ประกอบเช่นinput[type="search" i] <input type="SEARCH">
BoltClock

1
ฉันสามารถยืนยันได้ว่าทำงานร่วมกับ Chromium เวอร์ชัน 43.0.2357.130 และเปิดใช้งาน“ เปิดใช้งานคุณลักษณะแพลตฟอร์มเว็บรุ่นทดลอง”
Robert Siemer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.