javascript - 是否可以直接在 Svelte 中渲染 SVG 元素?

标签 javascript svg svelte rollup

我正在尝试在 Svelte 中导入和渲染 SVG。

我正在使用@rollup/plugin-url像这样导入 SVG 代码:

<script>
  import arrowCircle from "heroicons/dist/solid-sm/sm-arrow-circle-up.svg"
</script>

<main>
  <object title="Arrow Circle" type="image/svg+xml" data={arrowCircle}></object>
</main>

现在这可以工作了(就引入的 SVG 内容而言),但它呈现以下屏幕:

Rendered SVG

Rendered SVG tag

理想情况下,我想使用 <object />元素,这样我就可以将类应用于 SVG,但考虑到错误,我想我会尝试使用 <img />标记以查看这是否至少会渲染 SVG,但得到的是:

<img src="data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22currentColor%22%3E%20%20%3Cpath%20fill-rule%3D%22evenodd%22%20d%3D%22M10%2018a8%208%200%20100-16%208%208%200%20000%2016zm3.707-8.707l-3-3a1%201%200%2000-1.414%200l-3%203a1%201%200%20001.414%201.414L9%209.414V13a1%201%200%20102%200V9.414l1.293%201.293a1%201%200%20001.414-1.414z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E">

我也尝试过{arrowCircle}但这呈现了上面的图像 src作为纯文本。

据我所知,这与 data 有关。作为原始导入一部分的前缀。

我知道 codefeathers/rollup-plugin-svelte-svg插件,但希望能够在没有其他插件的情况下做到这一点(如果可能的话),或者至少了解发生了什么。

仅供引用,SVG 在 <img /> 中都有效。标签以及 <object />按照这个article .

最佳答案

SVG 文件作为独立图像似乎无效。试试这个:

<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" ...>...</svg>

关于javascript - 是否可以直接在 Svelte 中渲染 SVG 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61452073/

相关文章:

javascript - "npm run dev"命令不执行 't Work - Giving "缺少脚本 : dev"error

javascript - 如何在不使用其模块名称的情况下为类创建新对象?

javascript - Google map API - 格式化的电话号码在侧栏列表中显示为未定义

javascript - 更改图像/svg 以在网页上正确显示横向或纵向

css - 更改 jvectormap 负值颜色

typescript - 关于 Svelte 的 reactive statements with typescript 的问题

javascript - 尝试在我的井字棋中实现 Minimax AI (javascript)

javascript - 使用js按坐标点击

javascript - SVG 动画在 Chrome 中不起作用(在 GWT 中使用 animateTransform)

javascript - Svelte Tabs - 不要重新加载/销毁数据