问题描述
是否可以通过 HTML5 数据属性 (例如,data-role
) 在 CSS 中选择元素?
最佳解决方案
如果您的意思是使用 attribute selector,那么,为什么不:
[data-role="page"] {
/* Styles */
}
有各种各样的属性选择器可以用于各种场景,这些场景都在我链接到的文档中。请注意,尽管自定义数据属性是 「新的 HTML5 功能」,
-
浏览器通常没有任何支持 non-standard 属性的问题,所以您应该能够使用属性选择器进行过滤; 和
-
您不必担心 CSS 验证,因为 CSS 不关心 non-namespaced 属性名称,只要它们不会中断选择器语法。
次佳解决方案
在现代浏览器中,也可以选择属性,而不管其内容如何
有:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
例如:http://codepen.io/jasonm23/pen/fADnu
在很大一部分浏览器上工作。
注意这也可以在 JQuery 选择器中使用,或者使用 document.querySelector
第三种解决方案
值得注意的是 CSS3 子字符串属性选择器
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。