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

属性选择器规则失效:如何仅在指定页面使导航项加粗?

解决方案:基于页面URL实现导航项加粗(无需修改HTML)

首先得说清楚:纯CSS本身没有直接根据当前页面URL来选中元素的能力——CSS是基于DOM结构工作的,没法直接读取浏览器地址栏的URL信息。你之前尝试的相邻兄弟选择器无效,是因为html link[href="http://www.stuff.com/tagged/patterns"]这个选择器是在找页面里的<link>标签(比如样式表链接),而你的导航<a>标签根本不是它的相邻兄弟,自然匹配不到任何内容。

不过有两种可行的方法能实现你的需求:

方法1:利用页面唯一标识元素 + CSS :has() 选择器

如果目标页面(http://www.stuff.com/tagged/patterns)里存在一个只有该页面才有的元素(比如某个特定ID、class的容器,或者唯一的图片alt文本),你可以结合CSS的:has()选择器来定位导航项。

举个例子,假设目标页面里有个唯一的内容容器:<div id="patterns-page-content">,那你可以写这样的CSS:

body:has(#patterns-page-content) a[href="/patterns"] {
  font-weight: bold;
}

:has()选择器的作用是“选中包含指定元素的父元素”,这里就是当body里存在#patterns-page-content时,才把对应的导航项加粗。目前现代浏览器(Chrome、Firefox、Safari 15.4+)都支持这个选择器,旧浏览器可能需要降级方案。

方法2:用JavaScript检测URL并设置样式

如果页面里找不到唯一标识元素,那JavaScript是更稳妥的方案——它可以直接读取当前页面的URL,然后给对应的导航项设置样式,完全不需要修改HTML:

// 检测当前URL是否包含目标路径
if (window.location.href.includes('tagged/patterns')) {
  // 找到对应的导航链接
  const targetNavLink = document.querySelector('a[href="/patterns"]');
  // 如果找到就设置粗体
  if (targetNavLink) {
    targetNavLink.style.fontWeight = 'bold';
  }
}

这个方法兼容性拉满,所有现代浏览器都支持,而且逻辑简单直接,完全符合你“仅通过目标页面URL实现”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:38:17