浏览器限制:visited仅能修改color等少数颜色属性,且状态由本地历史记录决定,刷新不重置;需按LVHA顺序书写、避免高优先级规则覆盖、适配深色模式并使用具体颜色值。

浏览器缓存了已访问链接状态,刷新不重置
你改了 a:visited { color: #6c757d; },但页面一刷新,链接还是紫色——不是 CSS 没生效,而是浏览器把“已访问”状态记在本地,且不会因刷新或重载样式表而清除。它只认历史记录,不认代码改动。
- 用
Ctrl+H(Windows)或Cmd+Y(macOS)打开历史记录,删掉该页面或对应域名的所有访问记录 - 或者直接在地址栏输入
chrome://history/?q=yourdomain.com(Chrome)快速筛选删除 - 更彻底的办法:开无痕窗口(
Ctrl+Shift+N)测试,完全隔离历史状态
CSS 优先级被更高权重规则覆盖
写了 a:link { color: #007bff; } 却没变色,大概率是其他选择器抢了控制权。比如父容器设了 .nav a { color: #333 !important; },或内联样式 style="color: black" 直接压过了你的伪类。
- 用浏览器 DevTools(F12)选中链接,在 Styles 面板里看哪条
color被划掉(strikethrough),点右侧的文件名跳转定位冲突源 - 注意:
!important在:visited上基本无效——现代浏览器为安全强制忽略,别白费劲加 - 如果用了框架(如 Bootstrap),检查是否引入了它的 CSS,其
a规则可能带高特异性,需用更具体的选择器覆盖,例如body a:link
:hover 或 :visited 样式顺序写反了
CSS 伪类有隐含层叠逻辑:如果 a:visited 写在 a:hover 后面,鼠标悬停时可能触发的是 :visited 的颜色而非 :hover 的——尤其当两者都定义了 color 且无其他区分属性时。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- 必须按标准顺序书写:
a:link→a:visited→a:hover→a:active - 哪怕只写其中两个,也别颠倒
:visited和:hover的位置 - 一个典型反例:
a:hover { color: red; } a:visited { color: purple; }—— 已访问链接悬停时会显示紫色,不是红色
深色模式下颜色对比度失效,看着像“没反应”
你在浅色背景上设了 a:link { color: #007bff; },一切正常;但用户切到系统深色模式后,链接变成蓝灰色配深灰背景,实际颜色变了,只是人眼几乎看不见——这不是 bug,是可访问性合规要求下的被动降级。
立即学习“前端免费学习笔记(深入)”;
- 用 Chrome DevTools 的 “Rendering” 面板勾选
Prefers Reduced Motion和Prefers Color Scheme: Dark模拟真实环境 - 务必搭配
@media (prefers-color-scheme: dark)重定义颜色,例如:@media (prefers-color-scheme: dark) { a:link, a:visited { color: #60a5fa; } } - 别用纯黑
#000或纯白#fff做链接色,它们在对端背景下极易低于 WCAG 4.5:1 对比度门槛


















