CSS链接伪类必须按a:link→a:visited→a:hover→a:active顺序声明,否则已访问链接的hover/active样式易失效;:visited仅支持color等极少数属性,且需显式定义。

直接用 a:link 和 a:visited 分开写最稳妥
浏览器对已访问链接(a:visited)有安全限制,比如不能读取其真实 URL,但颜色仍可设——前提是必须显式声明,不能只靠 a { color: ... } 一把抓。否则在 Chrome/Firefox/Safari 中,a:visited 会退回到浏览器默认的紫色,且你写的规则可能被忽略。
-
a:link只匹配未访问链接,a:visited只匹配已访问链接,二者互不覆盖 - 如果只写
a { color: #007bff; },部分浏览器会把已访问链接也按这个色渲染,但不可靠;更常见的是它被浏览器内置样式兜底 - 必须按
a:link → a:visited → a:hover → a:active顺序写,否则:hover可能被:visited拦截(尤其当两者都定义了color且无 specificity 差异时)
a:hover 不生效?先查 pointer-events 和层叠顺序
a:hover 看似简单,但失效原因往往不在 CSS 本身。现代浏览器对 :visited 的限制也会间接影响 :hover 行为——比如你给 a:visited 加了 !important,又没给 a:hover 同等权重,悬停就可能“压不住”已访问态。
- 检查父容器是否设置了
pointer-events: none,这会让所有子元素失去鼠标事件响应 - 确认链接没被其他元素(比如空
<div>或绝对定位遮罩)盖住,可用浏览器开发者工具的“元素检查”功能点选验证 -
a:hover必须紧跟a:visited之后定义,且不能依赖继承:父级color不会自动传给:hover态
多页面项目必须抽离到外部 .css 文件
哪怕只有两个 HTML 文件,硬编码 <style> 或内联 style="color:..." 都会导致改一处、漏一处。外部 CSS 是唯一可控方式,而且能利用浏览器缓存。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 创建
styles.css,写入完整状态链:a:link { color: #007bff; } a:visited { color: #6c757d; } a:hover { color: #0056b3; } a:active { color: #004085; } - 在每个 HTML 的
<head>中引入:<link rel="stylesheet" href="styles.css"> - 别用
<font>标签或过时的link属性(如<body link="red">),HTML5 已废弃,且无法控制伪类态
颜色值用十六进制比英文名更可靠
写 color: red 看似省事,但不同浏览器对颜色名的解析存在细微差异;而 #007bff 这类十六进制是精确值,CSS 解析零歧义。
立即学习“前端免费学习笔记(深入)”;
- 支持透明度的写法(如
#007bff80)在a:link和a:visited中可用,但在a:hover中部分旧浏览器可能降级处理 - 避免混用单位:不要在一个规则里同时写
color: red和background-color: #fff,统一用十六进制或 RGB 更利于团队协作和自动化检查 - 如果设计系统要求动态换肤,别在 CSS 里写死颜色,改用 CSS 自定义属性:
a:link { color: var(--link-color, #007bff); }
a:visited 写在了 a:hover 后面,或者三个页面只改了两个的 style.css 引用路径。


















