May*_*hti 4 css css-selectors css3
我有以下字符串,我想使用css选择器忽略字符串中的强标记:
<p><strong>Local:</strong><br>
-Brasília/DF </p>
Run Code Online (Sandbox Code Playgroud)
我尝试了以下语法,但它不起作用.
p:not(strong)
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
附加到元素的伪类p:not(strong)从它们"附加" 的元素中选择(这里是p); 和<p>元件是总是不是一个<strong>元件; 因此,此选择器将始终匹配每个<p>元素.
您似乎试图<p>根据其子<strong>元素设置父元素的样式,因为CSS没有父选择器(请参阅:" 是否有CSS父选择器? ")
相反,您可以向<p>元素添加一个类(或其他属性),并在选择器中使用它:
<p class="hasStrongDescendant"><strong><strong>Local:</strong><br>
-Brasília/DF </p>
Run Code Online (Sandbox Code Playgroud)
和风格:
p:not(.hasStrongDescendant) {
/* CSS here */
}
Run Code Online (Sandbox Code Playgroud)
p:not(.hasStrongDescendant) {
color: orange;
}Run Code Online (Sandbox Code Playgroud)
<p>A paragraph with no child elements</p>
<p class="hasStrongDescendant"><strong>Local:</strong>
<br>-Brasília/DF</p>Run Code Online (Sandbox Code Playgroud)
或者,使用data-*属性:
<p data-hasChild="strong"><strong>Local:</strong><br>
-Brasília/DF </p>
Run Code Online (Sandbox Code Playgroud)
和风格:
p:not([data-hasChild="strong"]) {
/* CSS here */
}
Run Code Online (Sandbox Code Playgroud)
p:not([data-hasChild="strong"]) {
color: #f90;
}Run Code Online (Sandbox Code Playgroud)
<p>A paragraph with no child elements</p>
<p data-hasChild="strong"><strong>Local:</strong>
<br>-Brasília/DF</p>Run Code Online (Sandbox Code Playgroud)
另外,如果你包裹的内容<p>,下面的<strong>,自己的元素里,你可以使用样式否定选择段落的后裔:
<p>A paragraph with no child elements</p>
<p><strong>Local:</strong>
<br><span>-Brasília/DF</span>
</p>
Run Code Online (Sandbox Code Playgroud)
造型:
p :not(strong) {
/* note the space between the
'p' and the ':not()' */
color: #f90;
}
Run Code Online (Sandbox Code Playgroud)
p :not(strong) {
color: #f90;
}Run Code Online (Sandbox Code Playgroud)
<p>A paragraph with no child elements</p>
<p><strong>Local:</strong>
<br><span>-Brasília/DF</span>
</p>Run Code Online (Sandbox Code Playgroud)
另外两种方法,假设您想要在<strong>元素之外设置子项的文本样式(最简单):
/* define a colour for the <p>
elements: */
p {
color: #f90;
}
/* define a colour for the <strong>
elements within <p> elements: */
p strong {
color: #000;
}
Run Code Online (Sandbox Code Playgroud)
p {
color: #f90;
}
p strong {
color: #000;
}Run Code Online (Sandbox Code Playgroud)
<p>A paragraph with no child elements</p>
<p><strong>Local:</strong>
<br>-Brasília/DF</p>Run Code Online (Sandbox Code Playgroud)
还有一个稍微复杂的版本,使用CSS生成的内容:
p {
color: #f90;
}
p[data-label]::before {
content: attr(data-label) ': ';
color: #000;
display: block;
font-weight: bold;
}Run Code Online (Sandbox Code Playgroud)
<p data-label="Local">-Brasília/DF</p>Run Code Online (Sandbox Code Playgroud)
参考文献: