我已经读过HTML“boolean attributes”,例如 readonly ,已禁用,必需(等)是空白的或具有其名称的值。人们似乎正在使用这两种风格(见How should boolean attributes be written?)......
所以似乎最好的方法是编写你的CSS:
input[readonly], input[readonly="readonly"] {
}
(https://stackoverflow.com/a/19644231/1766230)
但是是否有更简洁的方式来编写它?也许使用一些CSS3属性选择器魔术?我试过input[readonly*=""]
,但没有运气。
答案 0 :(得分:6)
正如@JoshC在评论中写道,你可以简单地使用input[readonly]
。此CSS选择器(不知道所有标记序列化问题)匹配具有input
属性的readonly
元素,无论其值是什么。每个属性规范必须包含值的XHTML(XML)要求不会影响这一点。
答案 1 :(得分:4)
HTML中的布尔值不需要实际值。如果它们存在则为真,如果不存在则为假。
但是,在XHTML中,布尔值需要设置为包含属性集名称的字符串。
在HTML中
<input ... readonly>
CSS
input[readonly] { ... }
在XHTML中这很烦人,我想不惜一切代价避免
<input ... readonly="readonly" />
CSS
input[readonly="readonly"] { ... }
编辑正如很多人指出的那样,你可以在XHTML CSS中只编写readonly
,因为匹配属性的存在即使属性是设置为readonly="readonly"
。
XHTML的CSS是相同的
input[readonly] { ... }
除非您在XHTML和HTML文档中都使用CSS,否则无需编写两种形式的选择器。只需使用<input readonly>
和input[readonly]