无HTML及class权限时如何用CSS设置表格内链接各状态颜色
失效原因
之前的写法有两个核心错误:
- 链接状态伪类(
:link/:hover/:active/:visited)只能绑定在<a>标签上,你之前的选择器最终选中的是<a>内部嵌套的<font>标签,给<font>加链接伪类根本无法触发状态匹配。 - 你尝试拼接的
font:nth-child(1)a:hover是语法错误,浏览器会把它解析为「同时满足是<font>标签、是父元素第一个子元素、处于a的hover状态」的元素——但<font>和<a>是两层嵌套的独立标签,不可能是同一个元素,自然匹配不到;如果在选择器末尾追加> a:hover,则是要找<font>的子元素<a>,和实际DOM里<a>包裹<font>的嵌套顺序完全相反,也不可能命中。
另外90年代老代码里的<font>标签自带color属性,优先级高于CSS继承的样式,只给<a>标签设颜色会被内部<font>的颜色覆盖,必须选中对应状态下<a>内部的<font>,才能成功改色。
正确写法
你提到这个子页面是全站唯一包含表格的页面,完全可以直接用table作为选择器锚点,不用写那串冗长脆弱的nth-child链式选择器——只要页面前端多插一个空元素、广告位,nth-child序号偏移就会导致样式失效。
覆盖所有要求状态的CSS代码如下:
/* 未访问链接默认样式 */ table a:link font { color: #ff0000 !important; /* 可在此追加其他需要的样式,比如去除下划线等 */ } /* 已访问链接样式 */ table a:visited font { color: #cc0000 !important; /* 替换为你需要的已访问状态颜色 */ } /* 鼠标悬停样式:同时覆盖未访问、已访问两种状态 */ table a:link:hover font, table a:visited:hover font { color: #ff3333 !important; /* 替换为你需要的悬停状态颜色 */ text-decoration: underline !important; } /* 鼠标点击激活瞬间样式 */ table a:active font { color: #ffff00 !important; /* 替换为你需要的激活状态颜色 */ }
如果你担心选择器范围太宽,直接把代码里的table替换成你之前已经调试稳定的表格定位前缀:body > center:nth-child(1) > center:nth-child(5) > table:nth-child(1)
替换后就只会精准命中你要修改的目标表格,不会产生任何全局样式污染。
额外说明
你之前写好的非链接文本样式可以直接保留,不受上述代码影响。所有规则都加了!important,可以直接覆盖原<font>标签自带的旧颜色属性,不需要修改原站任何HTML代码,完全适配Stylish扩展的样式注入逻辑。
内容的提问来源于stack exchange,提问作者Elerium-115
相关产品推荐
相关产品推荐

