我给 <img> 设置了 ::before 和 ::after 样式,为什么不生效?

由于 ::before::after 是一样的,下文就以 ::after 举例

首先引用一段 MDN 上对 ::after 的解释:

CSS 伪元素 ::after 用来创建一个伪元素,作为已选中元素的最后一个子元素。

这段话里的关键词是“子元素”

如果你使用 vsc 并开启 ESLint,当你尝试在 <img> 里插入元素,就像下面这样:

<img src="https://test.yigowork.com//ego/attach/icons/icon39.svg">
  <h2>Can I stay here?</h2>
</img>

你将会得到 ESLint 抛出来的报错 Parsing error: x-invalid-end-tag

从侧面反映了 <img> 是不能(起码是不建议)有子元素的,那自然 CSS 的伪元素也就插入不了了。

PS:之前查资料好像 Opera 是支持在 <img> 上设置 CSS 伪元素的。

posted @ 2021-03-16 16:56  尹宇星_Kim  阅读(1503)  评论(0编辑  收藏  举报