เป็นไปได้หรือไม่ที่จะเลือกองค์ประกอบใน CSS โดยใช้แอตทริบิวต์ข้อมูล HTML5 (เช่นdata-role
)
เป็นไปได้หรือไม่ที่จะเลือกองค์ประกอบใน CSS โดยใช้แอตทริบิวต์ข้อมูล HTML5 (เช่นdata-role
)
คำตอบ:
หากคุณหมายถึงการใช้ตัวเลือกแอททริบิวแน่นอนว่าทำไม:
[data-role="page"] {
/* Styles */
}
มีตัวเลือกแอททริบิวต์หลากหลายแบบที่คุณสามารถใช้สำหรับสถานการณ์ต่าง ๆ ที่กล่าวถึงในเอกสารที่ฉันลิงก์ โปรดทราบว่าแม้ว่าแอตทริบิวต์ข้อมูลที่กำหนดเองจะเป็น "คุณลักษณะ HTML5 ใหม่"
โดยทั่วไปแล้วเบราว์เซอร์ไม่มีปัญหาใด ๆ ที่สนับสนุนแอตทริบิวต์ที่ไม่ได้มาตรฐานดังนั้นคุณควรจะสามารถกรองพวกเขาด้วยตัวเลือกคุณลักษณะ และ
คุณไม่ต้องกังวลเกี่ยวกับการตรวจสอบความถูกต้องของ CSS เนื่องจาก CSS ไม่สนใจชื่อแอตทริบิวต์ที่ไม่ใช่เนมสเปซตราบใดที่มันไม่ทำให้ไวยากรณ์ของตัวเลือกแตก
$("#element").data("field","value");
ไม่เปลี่ยนค่าแอตทริบิวต์ของข้อมูล แต่จะแก้ไขเฉพาะเวอร์ชันที่แคชของ jQuery ของ DOM เท่านั้น เพื่อที่จะเปลี่ยนแอตทริบิวต์ DOM $("#element").attr("data-field","value");
จริงหนึ่งในความต้องการที่จะใช้ ทำให้ความคิดเห็นเดิมของฉันไม่ถูกต้อง
นอกจากนี้ยังเป็นไปได้ที่จะเลือกแอตทริบิวต์โดยไม่คำนึงถึงเนื้อหาในเบราว์เซอร์สมัยใหม่
ด้วย:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
ตัวอย่างเช่น: http://codepen.io/jasonm23/pen/fADnu
ทำงานบนเบราว์เซอร์เปอร์เซ็นต์ที่สำคัญมาก
หมายเหตุสิ่งนี้สามารถใช้ในตัวเลือก JQuery หรือใช้ document.querySelector
^=
, *=
และ$=
) ได้รับการสนับสนุนโดย IE7 และ IE8 บางทีพวกเขาอาจถูกนำมาใช้ใน IE ก่อนที่จะเป็นมาตรฐาน
เป็นที่น่าสังเกต CSS3 substring attribute selectors
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
คุณสามารถรวมตัวเลือกได้หลายตัวและนี่ก็ยอดเยี่ยมมากเมื่อรู้ว่าคุณสามารถเลือกทุกแอททริบิวและแอททริบิวตามค่าของพวกเขาเช่นhref
ตามค่าของพวกเขาด้วย CSS เท่านั้น
ตัวเลือกแอททริบิวต์จะช่วยให้คุณเล่นกับแอททริบิวid
และแอปclass
นี่คือการอ่านที่ยอดเยี่ยมเกี่ยวกับSelectors Selectors
a[href="http://aamirshahzad.net"][title="Aamir"] {
color: green;
text-decoration: none;
}
a[id*="google"] {
color: red;
}
a[class*="stack"] {
color: yellow;
}
<a href="http://aamirshahzad.net" title="Aamir">Aamir</a>
<br>
<a href="http://google.com" id="google-link" title="Google">Google</a>
<br>
<a href="http://stackoverflow.com" class="stack-link" title="stack">stack</a>
รองรับเบราว์เซอร์:
IE6 +, Chrome, Firefox และ Safari
[data-value] {
/* Attribute exists */
}
[data-value="foo"] {
/* Attribute has this exact value */
}
[data-value*="foo"] {
/* Attribute value contains this value somewhere in it */
}
[data-value~="foo"] {
/* Attribute has this value in a space-separated list somewhere */
}
[data-value^="foo"] {
/* Attribute value starts with this */
}
[data-value|="foo"] {
/* Attribute value starts with this in a dash-separated list */
}
[data-value$="foo"] {
/* Attribute value ends with this */
}