关于 SVG 中 xlink:href 已被弃用

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费积分!

一位读者写信告诉我,我们应该更新有关 SVG <use> 元素的文章。 我们一直使用的属性 xlink:href 已被弃用。 事实上,MDN 说

Deprecated since SVG 2
This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Avoid using it and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

这是一种非常强烈的措辞,因此读者的警告是有道理的。 这让我有点惊讶,因为SVG 2 的事情有点奇怪。 看起来它确实变成了候选推荐

所以…

<!-- This is old -->
<svg>
  <use xlink:href="#whatever" />
</svg>

<!-- This is new -->
<svg>
  <use href="#whatever" />
</svg>

我喜欢它。 但它真的有效吗? 让我分叉我那简陋的旧演示,并更改所有引用。 在快速浏览一下我可以轻松访问的内容后

Chrome 67 Firefox 61 Safari 11 Edge 17 IE 11 iOS 11
🙅‍♂️ 🙅‍♂️

比我想象的要好! 但是,由于有太多🙅‍♂️ 不支持的地方,直接切换所有内容似乎太危险了,尤其是当xlink:href 拥有广泛的支持时。

浏览器真的会撤回支持吗? 我敢打赌,它们永远不会这样做。 还有很多使用旧格式属性的网站永远不会更新,我们知道浏览器非常重视防止旧网站出现问题(好极了)。

感觉就像使用:before::before 一样。 是的,::before 是新的、更正确的语法。 但是,没有浏览器会撤回对:before 的支持(我敢打赌再赌 50 美元),因为这只会毫无必要地导致网站出现问题。 因此,由于这个原因,使用:before 可能最有意义,因为这样可以获得最广泛的支持。

除非发生奇怪的事情,某个浏览器真的撤回了支持,否则我可能不会更新使用<use xlink:href="" /> 的旧文章。