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

如何使用CSS选择器定位与a[aria-expanded=true]同父级的.fa-caret-down/up图标?

解决通过同级<a>标签的aria-expanded状态控制图标显示的问题

嘿,我懂你的困扰——你想借助同一父容器里<a>标签的aria-expanded状态,来切换旁边<span>里的上下箭头图标,但原来的CSS选择器因为层级关系不对,根本选不到目标图标对吧?咱们来一步步解决它。

问题根源

你原来的CSS写的是:

a[aria-expanded="true"] .fa-caret-up { display: none; }
a[aria-expanded="false"] .fa-caret-down { display: none; }

这个选择器是在找<a>标签内部的.fa-caret-up/.fa-caret-down元素,但实际上图标是在和<a>同级的<span>标签里,所以完全匹配不到目标,自然没效果。

解决方案:使用CSS兄弟选择器

咱们可以用CSS的通用兄弟选择器(~)来选中与<a>同级的<span>,再定位里面的图标。修改后的CSS如下:

/* 当a标签展开状态为true时,隐藏同级span里的向上箭头 */
a[aria-expanded="true"] ~ span .fa-caret-up {
  display: none;
}
/* 当a标签展开状态为false时,隐藏同级span里的向下箭头 */
a[aria-expanded="false"] ~ span .fa-caret-down {
  display: none;
}

/* 针对第二个区块的单个图标(可选,实现图标切换) */
.footer_ipp_glyph.fa-caret-up {
  display: none;
}
a[aria-expanded="true"] ~ span .footer_ipp_glyph.fa-caret-down {
  display: none;
}
a[aria-expanded="true"] ~ span .footer_ipp_glyph.fa-caret-up {
  display: inline-block;
}

选择器说明

  • a[aria-expanded="true"] ~ span:选中所有和aria-expanded="true"的<a>标签同级的<span>元素(不管它们之间有没有其他元素)
  • 如果你的<a>和<span>是紧挨着的,也可以用相邻兄弟选择器(+),比如a[aria-expanded="true"] + span,这样更精准,但~兼容性更好也更灵活。

适配你的结构验证

对应你代码里的第一个区块:

<div class="d-flex justify-content-between align-items-center">
  <a href="#" data-toggle="collapse" data-target="#footer_ups" aria-expanded="false" aria-controls="footer_ups">
    <span class="flex-grow-1 mr-5"><i class="fa fa-chevron-right pr-2"></i>Université Paris-Saclay</span>
  </a>
  <span class="badge badge-primary badge-pill">7 <i class="fa fa-caret-down"></i><i class="fa fa-caret-up"></i></span>
</div>

修改后的CSS会完美匹配这个结构:当<a>的aria-expanded变为true时,同级<span>里的.fa-caret-up会被隐藏;反之.fa-caret-down隐藏,正好实现展开/收起时的图标切换。

对于第二个只有单个向下箭头的区块,你可以选择添加一个向上箭头图标,用上面的第二个CSS逻辑来切换显示,完全不用改动现有DOM结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:32:35