首页 > web前端 > css教程 > 正文

css标签切换时想高亮当前标签如何实现_通过:target伪类定位当前激活块

P粉602998670
发布: 2025-12-19 20:38:59
原创
893人浏览过
:target伪类仅能高亮URL锚点对应的内容区块,无法直接高亮导航标签;需用JavaScript监听hashchange事件动态添加.active类来实现标签高亮。

css标签切换时想高亮当前标签如何实现_通过:target伪类定位当前激活块

:target 伪类实现标签切换时高亮当前项,前提是每个标签对应一个带 id 的区块,且通过锚点链接跳转。它本身不控制“标签”的选中状态,而是响应 URL 中的 fragment(即 #xxx)自动匹配目标元素。

前提:结构要符合锚点跳转逻辑

确保你的标签是超链接,href 指向对应内容块的 id

<nav>
  <a href="#section1">标签一</a>
  <a href="#section2">标签二</a>
  <a href="#section3">标签三</a>
</nav>

<section id="section1">内容一</section>
<section id="section2">内容二</section>
<section id="section3">内容三</section>
登录后复制

用 :target 配合标签实现高亮

:target 作用于被 URL fragment 选中的元素(比如 #section2 对应 section#section2),但你想高亮的是 对应的标签链接,不是内容块本身。CSS 无法反向从 section:target 去样式化前面的 a(不支持父选择器或跨兄弟选择)。所以需借助间接方式:

  • 给每个 a 添加与目标 id 对应的 data-target 属性
  • 利用 URL fragment 变化 + JavaScript 监听 hashchange,动态添加 .active
  • 纯 CSS 方案只能高亮 section:target,不能直接高亮 a

纯 CSS 可行的高亮方式(仅限内容块)

如果只需视觉上突出当前展示的内容区,直接写:

立即学习前端免费学习笔记(深入)”;

稿定抠图
稿定抠图

AI自动消除图片背景

稿定抠图 80
查看详情 稿定抠图
section:target {
  background-color: #f0f8ff;
  padding: 1rem;
  border-left: 4px solid #4a90e2;
}
登录后复制

这样点击标签后,对应 section 就会高亮——这是 :target 最标准、无需 JS 的用法。

想高亮标签本身?推荐轻量 JS 方案

监听地址栏 hash 变化,更新 a 的状态:

<script>
function setActiveTab() {
  const hash = location.hash.slice(1);
  document.querySelectorAll('nav a').forEach(a => {
    a.classList.toggle('active', a.getAttribute('href') === `#${hash}`);
  });
}
window.addEventListener('hashchange', setActiveTab);
setActiveTab(); // 初始化
</script>
登录后复制

CSS 补一句:

nav a.active { color: #4a90e2; font-weight: bold; }
登录后复制

基本上就这些。:target 很干净,但有局限;真要操作导航项状态,JS 是更自然、可控的选择。

以上就是css标签切换时想高亮当前标签如何实现_通过:target伪类定位当前激活块的详细内容,更多请关注php中文网其它相关文章!

Windows激活工具
Windows激活工具

Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号