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

多<a>元素作为锚点时,如何用:target伪类高亮指定<h1>元素

问题:多个锚点跳转后统一高亮目标元素

我们有时候需要通过带#后缀的URL跳转到页面指定区域,通常会用到多个空<a>标签做锚点,示例HTML代码如下:

<p><a href="#sun">Lorem</a> ipsum.</p>
<p>Lorem ipsum dolor sit amet.</p>
<p>Lorem <a href="#yellow">ipsum</a> dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor <a href="#hot">sit</a> amet.</p>
<p>Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet.</p>
<a id="yellow"></a>
<a id="hot"></a>
<h1 id="sun">Sun</h1>
<p>Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet.</p>

点击这些链接跳转后,希望用:target伪类高亮<h1 id="sun">Sun</h1>元素,但目前只有href="#sun"的链接能生效,怎么让href="#hot"和href="#yellow"也实现同样的高亮效果?当前尝试的CSS代码如下:

/* works for href="sun" */
:target { outline: 1px solid red; }

/* my attempt to make it work for href="hot". Doesn't work.
And there is still a question how to make it work for href="yellow" */
:target + h1 { outline: 1px solid red; }

解决方案

你之前用的相邻兄弟选择器+只能选中紧挨着的下一个兄弟元素,但#hot和h1#sun之间没有直接相邻,所以失效。改用通用兄弟选择器(~)就能解决,它可以选中当前元素之后所有的同级兄弟元素,不管中间隔了多少个元素。

修改后的CSS代码:

/* 直接锚定到sun时高亮 */
#sun:target {
  outline: 1px solid red;
}

/* 锚定到yellow或hot时,高亮后面的sun元素 */
#yellow:target ~ #sun,
#hot:target ~ #sun {
  outline: 1px solid red;
}

或者更简洁的合并写法:

#sun:target,
#yellow:target ~ #sun,
#hot:target ~ #sun {
  outline: 1px solid red;
}

这样不管点击哪个锚点链接,最终都会让<h1 id="sun">Sun</h1>被红色外框高亮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:12:52