【问题标题】:How to display img alt text using CSS? [duplicate]如何使用 CSS 显示 img alt 文本? [复制]
【发布时间】:2014-06-05 00:05:32
【问题描述】:

我试过了,效果很好

<p alt="world">hello</p>

使用 CSS

p::after {
  content: attr(alt);
}

但我尝试时它不起作用

<img src="http://placehold.it/300x300" alt="my image caption">

使用 CSS

img::after {
  content: attr(alt);
}

是否可以使用 CSS 为 img 输出替代文本?

请说明浏览器与您提供的任何解决方案的兼容性。

Here's a jsfiddle

【问题讨论】:

  • 不单独使用CSS,可以使用JS或者jQuery。
  • alt 属性仅在 imginput[type="image"]area 元素(以及 object[type="image"] 但这是轶事)上有效。它也是强制性的(在某些情况下可以有一个空值,如 alt=""

标签: css


【解决方案1】:

这是设计使然。

img 标签是自闭合 (&lt;tag /&gt;) 标签,因此它们不包含“内容”。由于它们不包含任何内容,因此不能附加content(即::after)或附加(即::before)。

其他自闭合的 HTML 元素也是如此:

&lt;area&gt;, &lt;base&gt;, &lt;br&gt;, &lt;col&gt;, &lt;command&gt;, &lt;embed&gt;, &lt;hr&gt;, &lt;keygen&gt;, &lt;link&gt;&lt;meta&gt;&lt;param&gt;&lt;source&gt;&lt;track&gt;&lt;wbr&gt;

这是 (CSS2) 规范所说的:

注意。本规范没有完全定义交互 :before 和 :after 替换元素(例如 HTML 中的 IMG)。这 将在未来的规范中更详细地定义。 [2014 年:尚未发生]

来源: http://www.w3.org/TR/CSS2/generate.html#before-after-content

【讨论】:

  • 是的。 :after 实际上是 :end-of-innerHTML:before 实际上是 :start-of-innerHTML。并且自闭合标签没有innerHTML。
  • 多么令人失望。那么就没有办法了吗?
  • @naomik 请求规范编写者让规范少一些。然后期待 2100 年的 IE 支持。
猜你喜欢
  • 2018-05-07
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多