刚刚发现你可以使用(任何?)unicode角色作为ID属性,这为我开启了一个全新的世界。
但我正在尝试将ID属性设置为/name
,并且它不想工作。这就是我所拥有的:
#\\/name\\/ {
display:none;
}
#\\/name\\/:target {
display: inline-block;
}
#\\/name\\/:target ~ .open {
display: none;
}
我做错了什么?或者这是不可能实现的?我是否必须回去使用☠?
ALSO:
在我的最终CSS中,我使用[id*='work-']
来选择具有ID工作的所有div,我该如何使用/ name?
答案 0 :(得分:9)
根据HTML5和浏览器实践,id
attribute值可以包含除空格字符之外的任何字符。这给了很多自由,但选择有其成本,因为在HTML之外可能使用id
属性值的上下文可能会强加自己的限制和要求。
具体来说,在CSS中,identifier(例如您在选择器语法中#
之后编写的那个)“只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A0及更高,加连字符( - )和下划线(_);它们不能以数字,两个连字符或连字符后跟数字开头“。其他字符只能使用使用反斜杠\
字符的转义符号。
在您的jsfiddle中,HTML属性为id="#\\/name"
。这意味着属性值以一个#
字符开头,后跟两个\
字符,后跟一个/
字符。所有这些必须逃脱。最简单的方法是在它们每个前面加一个反斜杠,因此选择器将是#\#\\\\\/name
。
但我认为价值中的#
实际上是一个错字或错误,不应该存在。所以我认为你的代码应该是这样的:
#\\\\\/name {
display:none;
}
#\\\\\/name:target {
display: inline-block;
}
#\\\\\/name:target ~ .open {
display: none;
}
<div id="wrapper">
<div id="\\/name">I'm alive!</div>
<a class="open" href="#\\/name">Open</a>
</div>