是否可以在 SVG 中使用 Snap?
Is it possible to use Snap inside an SVG?
我正在按照 https://css-tricks.com/video-screencasts/135-three-ways-animate-svg/ 上的教程进行操作,我正在尝试将所有内容放入 svg 中,但 js 部分使用了 Snap,但无法正常工作。
我试过了
<svg version="1.1" id="robot" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 127.9 178.4" enable-background="new 0 0 127.9 178.4" xml:space="preserve">
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js">
var s = Snap("#robot");
var leftPupil = s.select("#left-pupil");
leftPupil.attr({
fill: "green"
});
leftPupil.animate({
r: 50,
fill: "lightgreen"
}, 1000);
</script>
</svg>
但控制台显示 Snap 未定义。是否可以仅使用 SVG 以某种方式加载它?
您需要将 SnapSVG 库导入到与您定义自己的代码的标签不同的 <script>
标签中。因此,请尝试关闭第一个 <script>
标记,然后为您的代码打开一个新标记,即:
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>
<script>
// your JS code
</script>
<svg>
元素中的 <script>
标签来自 SVG 命名空间,并使用 href
属性(如果您遵守 SVG 1.1,则使用 xlink:href
)而不是src
。此外,正如 johnheroy 所说,请注意为每个脚本使用单独的元素。
<svg id="robot" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ...>
<script xlink:href="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js" />
<!-- grafic content -->
<script>
var s = Snap("#robot");
//...
</script>
</svg>
我正在按照 https://css-tricks.com/video-screencasts/135-three-ways-animate-svg/ 上的教程进行操作,我正在尝试将所有内容放入 svg 中,但 js 部分使用了 Snap,但无法正常工作。
我试过了
<svg version="1.1" id="robot" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 127.9 178.4" enable-background="new 0 0 127.9 178.4" xml:space="preserve">
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js">
var s = Snap("#robot");
var leftPupil = s.select("#left-pupil");
leftPupil.attr({
fill: "green"
});
leftPupil.animate({
r: 50,
fill: "lightgreen"
}, 1000);
</script>
</svg>
但控制台显示 Snap 未定义。是否可以仅使用 SVG 以某种方式加载它?
您需要将 SnapSVG 库导入到与您定义自己的代码的标签不同的 <script>
标签中。因此,请尝试关闭第一个 <script>
标记,然后为您的代码打开一个新标记,即:
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>
<script>
// your JS code
</script>
<svg>
元素中的 <script>
标签来自 SVG 命名空间,并使用 href
属性(如果您遵守 SVG 1.1,则使用 xlink:href
)而不是src
。此外,正如 johnheroy 所说,请注意为每个脚本使用单独的元素。
<svg id="robot" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ...>
<script xlink:href="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js" />
<!-- grafic content -->
<script>
var s = Snap("#robot");
//...
</script>
</svg>