首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多路径SVG

多路径SVG
EN

Stack Overflow用户
提问于 2022-03-16 08:55:36
回答 1查看 211关注 0票数 0

如何处理svg中的不同填充变量?

我试着这样做,但我没有得到任何结果:

代码语言:javascript
复制
<img class="icon-shop icon-colors" src="@/assets/icon-shop.svg"/>
...
<style>
.icon-colors {
  --color-default: #c13127;
  --color-dark: #ef5b49;
}
</style>

图标-icon.icon

代码语言:javascript
复制
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="..." fill="var(--color-default)"/><path d="..." fill="var(--color-dark)"/><path d="..." fill="var(--color-default)"/><g><path d="..." fill="var(--color-default)"/></g></svg>

编辑1:

当我尝试使用svg作为.vue文件时,我得到一个空白页,控制台错误:

代码语言:javascript
复制
Failed to execute 'createElement' on 'Document': The tag name provided ('/img/icon-shop.7de319ba.svg') is not a valid name.

编辑2:我不知道该如何导出变量组件

代码语言:javascript
复制
<template>
  <svg
    v-if="name === 'shop'"
    xmlns="http://www.w3.org/2000/svg"
    viewBox="0 0 24 24"
  >
    <path
      d="M15.6 1.6H8.4c-.4 0-.7.3-.7.7v2.5h8.5V2.3c.1-.4-.2-.7-.6-.7z"
      fill="var(--color-default)"
    />

  </svg>
</template>

<script>
export default {
  props: ["name", "var(--color-default)", "var(--color-black)"],
};
</script>

组件调用

代码语言:javascript
复制
<IconShopVue
      color-default="#c0ffee"
      color-dark="#c0ffee"
      class="w-8 h-8"
      name="shop"
    ></IconShopVue>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 09:00:44

有关如何使此代码正常运行的更新

代码语言:javascript
复制
<template>
  <svg
    v-if="name === 'shop'"
    xmlns="http://www.w3.org/2000/svg"
    viewBox="0 0 24 24"
  >
    <path
      d="M15.6 1.6H8.4c-.4 0-.7.3-.7.7v2.5h8.5V2.3c.1-.4-.2-.7-.6-.7z"
      :fill="colorDefault"
    />

  </svg>
</template>

<script>
export default {
  props: ["name", "colorDefault", "colorBlack"],
};
</script>
代码语言:javascript
复制
<IconShopVue
  color-default="#c0ffee"
  color-dark="#c0ffee"
  class="w-8 h-8"
  name="shop"
></IconShopVue>

您应该将svg放入.vue文件,将SVG代码复制到template部分。然后,将一些道具传递给您的.vue组件,并像使用任何其他类型的道具一样,插入实际的default/dark颜色。

代码语言:javascript
复制
<my-cool-svg header-color="#c13127" outline-color="#ef5b49" fill-color="#c0ffee"></my-cool-svg>

这将提供很大的灵活性,总体上与使用一个经典的.svg文件相比。

这就是.vue应该看起来的样子

代码语言:javascript
复制
<template>
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
    <path d="..." :fill="headerColor"/>
    <path d="..." :fill="outlineColor"/>
    <path d="..." :fill="fillColor"/>
    <g>
      <path d="..." :fill="fillColor"/>
    </g>
  </svg>

</template>

<script>
export default {
  props: ['headerColor', 'outlineColor', 'fillColor']
}
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71494140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档