wei*_*guy 7 html css css-selectors
我的 HTML 代码基本上是
<div class="a">
<div class="b">
...
</div>
</div>
<div class="c">
...
</div>
Run Code Online (Sandbox Code Playgroud)
我现在想应用于display: none;
c,但前提是 b 存在。a 和 c 始终存在。
我的方法是
.a .b ~ .c {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
编辑:现在可以纯粹通过 CSS 来实现(例外的是 Firefox 仍需要:has
在 2023 年 4 月集成选择器):
.a:has(.b) ~ .c {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
旧答案
这应该适合你:
var b = document.querySelector('.b');
if (b) {
document.querySelector('.c').style.display = 'none';
}
Run Code Online (Sandbox Code Playgroud)
<div class="a">a
<div class="b">b</div>
</div>
<div class="c">c</div>
Run Code Online (Sandbox Code Playgroud)
显然,JavaScript 是必需的,但只需轻轻一点即可。您可以将 添加document.querySelector('.b)
到语句中if
,而不是将其保存到变量中。
编辑:稍微澄清一下您的代码有什么问题 - 您首先选择.a .b
哪个将选择该类b
(如果它是该类的后代a
),然后您使用通用兄弟组合器(后续兄弟组合器),但它不会选择c
班级。这是因为该类c
位于a
元素之外,因此不是您的a
类的后代。纯 CSS 解决方案是将您的c
类放在您的元素中a
,这将使您当前的 CSS 工作并且不需要 JavaScript。例如,您的 HTML 将如下所示:
.a .b ~ .c {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
<div class="a">a
<div class="b">b</div>
<div class="c">c</div>
</div>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,一般的兄弟组合 ~
运算符将查找b
类后面的任何后续元素c
。c
如果您只想将其应用于之后的第一个元素b
,请考虑使用相邻同级选择器 +
,也称为“下一个同级组合器”。
归档时间: |
|
查看次数: |
7623 次 |
最近记录: |