所以我有一个由我的 CMS 生成的导航菜单:

菜单的 HTML 很简单(为清晰起见进行了编辑):
<ul>
<li><a href="...">Journal</a></li>
<li><a href="...">Art</a></li>
<li><a href="...">Work</a></li>
</ul>
我希望这些项目显示为手写文本,以符合网站的一般主题,为每个菜单项使用单独的 PNG 文件。
为此,我使用了 CSScontent属性,如下所示:
#headerNav .nav li a[href="/_site/en/journal/"]
{ content: url(/path/to/image.png); }
而且效果很好!每个项目的 HTML 文本都替换为正确的图像:

然而,唉,后来我了解到并不是每个浏览器都支持 content选择器上的属性,而不是:before和:after!Chrome 和 Safari 会这样做,但 Firefox 不会。但是,当我使用 :before时,不会替换 HTML 节点,而是添加了图像:

我该如何解决这个问题?
什么不起作用:
- 制作
<a>元素也display: none删除了:before部分。 - 制作
<a>元素position: absolute并将其移动到其他地方也不起作用。 - 使
<a>元素width: 0px搞砸了布局,因为通过添加的图像content不在文档流中。
我不想做的事情:
当然,我可以手动输出图像,但我想使用 CMS 给我的 HTML,其中
<li>包含文本。任何涉及的解决方案
background-image都需要我在样式表中指定每个项目的宽度和高度,出于这个问题的目的,我想避免这样做。将笔迹变成字体不是一种选择。
使用 JavaScript 动态替换项目不是一种选择。这需要使用纯 HTML 和 CSS 来工作。