fdi*_*itz 2 javascript svg svg.js
我正在使用SVG.js并尝试使用 SVG 进行一些操作。我以前使用过画布,但我对它生成的图像质量感到非常失望,所以我决定使用纯 SVG。
我设法将所有内容都改成了纯 SVG 方法,除了一件事:旋转。
我不能让它工作。我很想使用 SVG.js 库提供的东西,但这没有用。我也试过摆弄里面的元素,但也没有成功。到目前为止我找到的最好的链接是这个,但是尽管他设法单独旋转图像,但它没有显示如何一起旋转所有内容(这是我的情况)
我想要的是
我希望能够旋转我在 Inkscape 中创建的 SVG 图像(相当简单)
问题
完全没有轮换,通过互联网上的几种方法和意见。
我试过的
问题示例
在这里,我有一个简单的播放器 SVG,我将其作为 JS 变量放置。图像被创建并移动到坐标 = (50, 50)。最后,我尝试将其旋转 45 度。(这没有帮助)
const player = '<svg width="11.214mm" height="6.3195mm" version="1.1" viewBox="0 0 11.214 6.3195" xmlns="http://www.w3.org/2000/svg">>\n' +
' <g transform="translate(-172.04 62.213)">\n' +
' <g transform="matrix(.429 0 0 .429 160.68 -80.101)">\n' +
' <g stroke="#000">\n' +
' <path d="m39.592 42.246c-4.5716 0.02368-12.788-1.0453-12.77 6.7945 0.01784 7.8398 12.788 6.8319 12.788 6.8319s12.667 1.041 12.681-6.9252-8.1273-6.7249-12.699-6.7012z" fill="#ff2a2a" stroke-width=".20436px"/>\n' +
' <circle cx="39.556" cy="49.061" r="7" fill="#ffb380" stroke-width=".26458"/>\n' +
' </g>\n' +
' </g>\n' +
' </g>\n' +
'</svg>';
if (SVG.supported) {
const drawArea = SVG('svgDrawArea').size(300, 300);
const group = drawArea.nested();
group.svg(player);
group.move(50, 50);
group.transform({ rotation: 45 });
} else {
alert('SVG not supported')
}
Run Code Online (Sandbox Code Playgroud)
#svgDrawArea{
/* background-color: red; */
height: 300px;
width:300px;
border: 1px solid black;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.4/svg.min.js"></script>
<div id="svgDrawArea"></div>Run Code Online (Sandbox Code Playgroud)
如果有人能解释为什么轮换不起作用或指出我可以澄清原因的地方,我会很高兴!
Pau*_*eau 10
您的问题是由于在 SVG 1.1 中,该<svg>元素不允许该transform属性。它现在在 SVG 2 中是允许的,但到目前为止只有 Firefox 已经实现了。Chrome 还没有。
解决方案是先追加一个组,然后将 SVG 放入该组中。然后您可以改为转换该组,它将在两种浏览器中都有效。
正如@noob 在他们的回答中所建议的那样。如果您愿意,请随时接受他们的回答。
| 归档时间: |
|
| 查看次数: |
1364 次 |
| 最近记录: |