所以我有一个由我的 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 来工作。