You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用:checked伪类设置visibility为visible时元素不显示问题

问题根因

你使用的通用兄弟选择器~仅能匹配同一父级下的后续兄弟元素,你当前隐藏的复选框<input>是包裹在.buttonSpace容器内部的,它的兄弟节点只有对应的<label>标签,你需要控制显隐的<figure>、<p>元素和.buttonSpace是同级节点,CSS原生不支持向上查找父元素,因此你现有的选择器完全匹配不到目标元素,样式自然不生效。
另外你给.backgroundHistory相关类默认设置了visibility: visible,不符合「默认隐藏、点击后显示」的需求,需要同步修改。

修复方案

方案1:调整DOM结构(兼容性最好,全浏览器支持)

将三个卡片的隐藏复选框从.buttonSpace内部移到.card的直接子节点,放在.buttonSpace之前,这样复选框和你要控制的<figure>、<p>属于同一父级下的兄弟节点,可以被~选择器正常匹配。
调整后单张卡片的HTML结构示例:

<div class="card">
  <!-- 把隐藏复选框移到此处,作为.card的直接子元素 -->
  <input type="checkbox"  id="expand-toggle">
  <div class="buttonSpace">
    <label for="expand-toggle"> <span class="buttonPicture"> "icon"</span> </label>
  </div>
  <figure id="f1">
    <img src="imgs/monaLisa.jpg" alt="Mona Lisa" class="pictureAdjustment">
    <figcaption class="imageHistory">
      <i>Leonardo da Vinci</i> (1503) <br>
    </figcaption>
  </figure>
  <p class="backgroundHistory">
    该画作创作于1503年至1519年,当时达芬奇居住在意大利佛罗伦萨。目前画作中的女性身份尚未明确,甚至有研究质疑其是否为真实女性。
  </p>
</div>

同步修改CSS的选中样式选择器,其余两个卡片的选择器按照相同规则调整即可:

/* 先修改默认隐藏样式,把文字介绍也默认隐藏 */
#f1, #f2, #f3,
.backgroundHistory, .backgroundHistory2, .backgroundHistory3{
  visibility: collapse;
}

/* 蒙娜丽莎卡片选中样式 */
#expand-toggle:checked ~ #f1,
#expand-toggle:checked ~ .backgroundHistory {
  visibility: visible;
}

/* 阿特米西亚卡片选中样式 */
#expand-toggle2:checked ~ #f2,
#expand-toggle2:checked ~ .backgroundHistory2 {
  visibility: visible;
}

/* 记忆的永恒卡片选中样式 */
#expand-toggle3:checked ~ #f3,
#expand-toggle3:checked ~ .backgroundHistory3 {
  visibility: visible;
}

方案2:使用:has()伪类(无需修改DOM,仅支持2023年后发布的现代浏览器)

如果不需要兼容老旧浏览器,可以直接用CSS的:has()伪类实现,不需要调整原有DOM结构,直接修改CSS的选中样式即可:

/* 先修改默认隐藏样式,把文字介绍也默认隐藏 */
#f1, #f2, #f3,
.backgroundHistory, .backgroundHistory2, .backgroundHistory3{
  visibility: collapse;
}

/* 蒙娜丽莎卡片选中样式 */
.buttonSpace:has(#expand-toggle:checked) ~ #f1,
.buttonSpace:has(#expand-toggle:checked) ~ .backgroundHistory {
  visibility: visible;
}

/* 其余两张卡片的样式按照相同规则调整即可 */

优化建议

如果希望元素隐藏时不占据页面空间,可以把visibility: collapse替换为display: none,选中时分别给<figure>设置display: flex、给<p>设置display: block,页面布局会更合理。

内容的提问来源于stack exchange,提问作者PabloJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:36:03