header 徽标或背景图像使用 IMG 元素更好,为什么?

Is it better to use an IMG element for a header logo or a background image, why?

我经常看到诸如 Whosebug 之类的网站将其徽标作为背景图像嵌入,并为 screen-readers.

的文本添加 span 标签
<a href="https://whosebug.com" class="-logo js-gps-track">
                    <span class="-img _glyph">Stack Overflow</span>
                </a>

为什么要这样做而不是使用带有替代文本的 img 元素? 有一些语义原因吗?一些可访问性原因? SEO原因?

它不适用于设置后备文本的样式 in-case 图片无法加载。您可以设置替代文字的样式...

它不是为了性能 - 因为对于 img,您可以使用 srcset 和 sizes 来提供替代的较小图像,而 CSS 唯一接近 srcset 和 sizes 的规范尚未得到很好的支持。

唯一一次我认为它有意义的是当 spritesheet 被用于网站时(比如堆栈溢出。)

如果是为了防止人们使用 "stealing" 徽标,那似乎很愚蠢,因为简单的 google 搜索就会告诉人们如何获取背景图像的 url。如果那是推理,它仍然看起来很愚蠢,因为您可以只在图像本身上使用 pointer-events:none;,并将包装 link 设置为 display:inline-block;,它仍然是可点击的 link,没有人能够右键单击并另存为。

我只是想了解这样做是否有好处。

我google四处寻找,但没有真正找到任何有用的信息来回答为什么要这样做。

有人将此标记为重复项: When to use IMG vs. CSS background-image? 他们不是同一个问题。这是您在网络上看到的具体做法和模式,其背后的原因可能有所不同。

看着它,我会说这是一种支持 SEO 的方法。正如您所指出的,有多种方法可以实现这一点,所以我愿意说这是他们的首选方法。

Why do this instead of an img element with alt text? Is there some semantic reason? Some accessibility reason? SEO reason?

当您想使用 CSS 媒体查询并根据屏幕分辨率显示不同的徽标大小时,它会很有用。

关于可访问性,这可能是允许用户在图像被禁用时查看替代文本的原因。