将 IMG 元素用于标题徽标或背景图像是不是更好,为啥? [复制]

Posted

技术标签:

【中文标题】将 IMG 元素用于标题徽标或背景图像是不是更好,为啥? [复制]【英文标题】:Is it better to use an IMG element for a header logo or a background image, why? [duplicate]将 IMG 元素用于标题徽标或背景图像是否更好,为什么? [复制] 【发布时间】:2019-03-24 20:27:53 【问题描述】:

我经常看到像 *** 这样的网站,例如将他们的徽标嵌入为背景图像,并为屏幕阅读器的文本添加 span 标签。

<a href="https://***.com" class="-logo js-gps-track">
                    <span class="-img _glyph">Stack Overflow</span>
                </a>

为什么这样做而不是带有替代文本的 img 元素? 有什么语义上的原因吗?一些可访问性的原因?搜索引擎优化的原因?

它不适用于在图片未加载时为后备文本设置样式。您可以设置替代文本的样式...

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

为什么这样做而不是带有替代文本的 img 元素?有什么语义上的原因吗?一些可访问性的原因?搜索引擎优化的原因?

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

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

【讨论】:

关于备用图像的要点。 我想我会添加虽然技术上使用图片元素可以让你做同样的事情。【参考方案2】:

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

【讨论】:

以上是关于将 IMG 元素用于标题徽标或背景图像是不是更好,为啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

启动屏幕不显示徽标图像

CSS:将标题中的渐变背景与图像结合为徽标[重复]

将图标放入表单中的输入元素内(不是背景图片!)[关闭]

是否可以使用背景图像制作响应式 div,并像 <img> 一样保持背景图像的比例?

Flutter:放置徽标图像后背景变为一半

使用背景图像或 CSS3 渐变更好吗? (电话间隙)