Hug*_*lpz 4 html css css-selectors custom-data-attribute
为什么我的明星没有出现在黄色?怎么解决?
以下是上述问题的相关代码.
HTML
<div class="tpl" data-favorite="1">
<div>
<span class="favorite">?</span>
<span class="text">Italian Pizza: salmon, olives, onion, tomato, blue-cheese</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
[data-favorite=1] {
background: #AAA;
border-left: 3px solid green
}
.favorite {
font-size: 2em;
padding: 0 1 0 1em;
}
[data-favorite=1] .favorite {
color:yellow;
}
[data-favorite=0] .favorite {
color:#AAA;
}
Run Code Online (Sandbox Code Playgroud)
Bre*_*ody 12
你会想要使用
[data-favorite="1"] {}
Run Code Online (Sandbox Code Playgroud)
不同之处在于值周围的引号"".
这是工作的jsFiddle
您需要使用"属性值
[data-favorite="1"] {
/* Styles goes here */
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
CSS规范 - 6.3.属性选择器
身份标识
[1]在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A0及更高,加上连字符( - )和下划线(_); 它们不能以数字,两个连字符或连字符后跟数字开头.标识符还可以包含转义字符和任何ISO 10646字符作为数字代码(请参阅下一项).例如,标识符"B&W?" 可以写成"B \&W \?" 或"B\26 W\3F".
所以问题是你的属性的值以数字开头,如果你的HTML中有这样的东西(你已经这样做了)
<span data-favorite="0">Color Me red</span>
Run Code Online (Sandbox Code Playgroud)
[data-favorite=0] { color: red;}
Run Code Online (Sandbox Code Playgroud)
工作
但是,如果你有类似的东西
<span data-favorite="a0">Color Me red</span>
[data-favorite=a0] { color: red;}
Run Code Online (Sandbox Code Playgroud)
将工作 (即使没有引号),因为属性的值以字母[1]开头.