首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同上下文中<use>元素的SVG自定义CSS样式

不同上下文中<use>元素的SVG自定义CSS样式
EN

Stack Overflow用户
提问于 2016-08-25 19:38:44
回答 2查看 425关注 0票数 2

在Firefox中,根据父类设置<use>元素的样式是可行的,但在Google Chrome /Safari中就不行了。如何以跨浏览器的方式实现这一点?

SCSS

代码语言:javascript
复制
.column-1 {
  .cls-1 {
    fill: red;
  }
  .cls-2 {
    fill: green;
  }
}

.column-2 {
  .cls-1 {
    fill: blue;
  }
  .cls-2 {
    fill: yellow;
  }
}

HTML

在演示中添加了元素,但它只是一个svg元素,它有两个路径,每个路径都有一个类名。

代码语言:javascript
复制
<div class="column-1">
    <svg><use xlink:href="#icon-usp_return"></use></svg>
  </div>

  <div class="column-2">
    <svg><use xlink:href="#icon-usp_return"></use></svg>
  </div>

演示/游乐场

http://codepen.io/anything/pen/kXKZNP?editors=1100

EN

回答 2

Stack Overflow用户

发布于 2016-08-25 20:19:55

您可以在SVG中使用路径样式,只需将以下内容添加到每个路径标记:

代码语言:javascript
复制
style="fill: var(--cls-1)"

然后为您的SVG标记设置一个类,如下所示:

代码语言:javascript
复制
<svg class="icon1"><use xlink:href="#icon-usp_return"></use></svg>

最后定义你的CSS:

代码语言:javascript
复制
.icon1 {
  --cls-1: red;
  --cls-2: green;
}

完整的工作示例可以在这里找到:http://codepen.io/westefan/pen/grNvoy

票数 1
EN

Stack Overflow用户

发布于 2016-08-25 21:47:42

可以将fill="currentColor"添加到SVG的第二个路径中。

然后你可以在你的css文件中写下:

代码语言:javascript
复制
.column-1 {
  use {
    fill: red;
    color: blue;
  }
}

.column-2 {
  use {
    fill: green;
    color: orange;
  }
}

以下是基于您的代码的工作示例:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39144274

复制
相关文章

相似问题

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