可以更简洁地编写布尔属性的CSS属性选择器吗?

时间:2013-10-28 20:30:27

标签: html css css3

我已经读过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*=""],但没有运气。

2 个答案:

答案 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]

粘贴HTML即可