【发布时间】:2021-02-14 18:49:14
【问题描述】:
使用 CSS 选择器,是否可以以任何方式区分以下两个代码 sn-ps?通过区分,我的意思是选择任何一个 sn-p 的任何部分(或整体),而不是另一个。
<span role="presentation">
<span class="test" role="presentation" test-text="foo">bar</span>
</span>
和
<span role="presentation">
<span class="test" role="presentation" test-text="foo">bar</span>
baz
</span>
所使用的网络浏览器只有 Firefox,因此也可以接受仅限 Mozilla 的功能。
编辑 1:
可能对回答者有所帮助的其他详细信息:
上述两个 HTML sn-ps 的更复杂版本都存在于代码中。我已将其隔离以简化此问题,因为其他所有内容都是相关的。唯一的区别是外部span 中的字符串(baz)。
我正在寻找一个选择器,它可以匹配一个 sn-p 中的任何内容,而不匹配另一个 sn-p 中的任何内容。 (我不确定这是否可行,所以我试图最大限度地灵活回答。)我无法更改上游 HTML,但我可以更改 CSS。
编辑 2:
我被要求添加更多细节和细节,因为这可能会影响答案。
我认为这真的有助于澄清:我的目标是隐藏字符串 bar 当且仅当 baz 存在于上游HTML(如第二个代码sn-p所示)。
我很擅长隐藏整个 span.test 元素或仅隐藏其中的 bar 文本字符串...任何一种方式都可以。
关于隐藏 bar,我对隐藏它的所有可能性持开放态度,因此它不占用空间。我在考虑 display: none 或 width: 0,但是当 baz 存在时任何导致它不占用任何空间的东西都是好的。
编辑 3:
只是一个快速更新:我深入浏览了上游代码,看起来 bar 将始终是空白。我不确定这是否会打开任何大门,但如果确实如此,我认为值得一提。
【问题讨论】:
-
定义区分
-
@TemaniAfif 选择任一 sn-p 的任何部分(或整体)的任何方法,但不选择另一个。
-
选择和做什么?
-
类似这样的东西:jsfiddle.net/m8b9taLp/1?只有 baz 是红色的?
-
@TemaniAfif 嗯......有趣......这几乎满足了所写的问题......现在我需要考虑一下,看看我是否可以用你的想法做我想做的事。这与我的想法完全相反,这可能会很好,因为我可以添加一个
:not()psuedo-class 或者使用您慷慨提供的方向来更多地考虑它。我需要花一点时间来考虑一下,因为你的做法与我的想法完全相反(这可能是件好事,因为我还没有成功)。
标签: html css firefox css-selectors pattern-matching