在SVG中显示CSS图像精灵,而不使用外来对象

Display CSS image sprite in SVG without using foreignObject

本文关键字:对象 SVG 显示 CSS 精灵 图像      更新时间:2023-09-26

如这个小提琴所示,可以使用foreignObject元素在SVG中渲染CSS精灵。

但是,IE不支持此功能,因此我想知道是否有其他方法可以做到这一点。

我怀疑答案可能是否定的,因为我发现了两个未解决的问题(1,2)

我正在使用 d3.js所以任何详细说明 d3 方法的答案都将是一个奖励。

如有必要,您可以使用clipPath挑选图像的某些部分。像这样扩展你的jsfiddle,看看我的意思...

<div class='source youtube'></div>
<svg width="100%" height="100%">
    <foreignObject height=50 width=50>
        <div class='source facebook'></div>
    </foreignObject>
    <defs>
        <clipPath id="c">
            <rect y="10" width="7" height="10"/>
        </clipPath>
        <clipPath id="c2">
            <rect x="7" y="12" width="7" height="10"/>
        </clipPath>
    </defs>
    <image transform="scale(4.5)" y="-5" width="40" height="20" xlink:href="https://s3.amazonaws.com/856/sprite.png" clip-path="url(#c)"/>
    <g transform="translate(-30, 0)">
    <image transform="scale(4.5)" x="0" y="0" width="40" height="20" xlink:href="https://s3.amazonaws.com/856/sprite.png" clip-path="url(#c2)"/>
    </g>
<svg>