html - 仅当它是唯一具有给定类选择器的元素时才显示元素
问题描述
我有一种情况,我可能有也可能没有多个具有相同类名的元素。我需要仅根据 css 的某些条件显示其中一个。
案例 1:在下面的 html 中,如果只有info类的div存在并且是唯一的,它应该始终可见。
案例2:如果有两个只有信息类的div,它们都应该是可见的。
案例 3:如果其中一个有额外的类,那么一个只有信息的应该是可见的。
案例 4:如果只有一个 div 包含info 和 extra类,它应该是可见的。
这可能来自css ..吗?
示例:在下面的示例中,只有第二个 div 应该是可见的
<body>
<div class="info extra">not visible</div>
<div class="info">visible</div>
</body>
我试图实现它,但浏览器中尚不支持选择器。那么我还有其他方法可以做到吗?
.extra {
display:none;
}
.info:only-child:has(.browserversionnotice) {
display:block
}
解决方案
如果我正确理解了这个问题,那么仅靠 CSS 是不可能的。当页面加载时,您必须在 JavaScript 中检查这些条件以在满足这些条件时隐藏它们。
这是您可以做到的一种方法:
window.addEventListener("load", () => {
let elms = document.querySelectorAll(".info");
if (elms.length == 1) {
return;
}
for (let i = 0; i < elms.length; i++) {
if (elms[i].classList.length != 1) {
elms[i].style.display = "none";
}
}
});
推荐阅读
- laravel - 如何在 laravel 中将商品添加到购物车?
- r - 使用 ggplot 使用列名绘制 dplyr 汇总 tibble
- html - 如果我使用或条件禁用输入复选框,则不会将其模型值传递给控制器
- apache-kafka - 卡夫卡提交差距
- ios - 如何在框架中使用 @objc 扩展?
- cmd - 使用 cmd 从子文件夹中删除特定文件
- java - 没有在android studio上打开谷歌地图就无法获取位置
- python-3.x - 在 pycharm 中为每次运行显示来自 mlflow 的度量值
- python - 如何使用 xlrd 将 excel 转换为嵌套的 JSON?
- javascript - JSON Parse 错误:带有 localStorage 的意外标识符“未定义”