12

升级到 FontAwesome 5 后,我无法为 FontAwesome 的 svg 着色。

这是我的例子: ⠀⠀⠀⠀⠀ https ://codepen.io/shadrix/pen/GygdZr

如果它像这里一样工作应该很棒:⠀⠀⠀⠀⠀ https ://codepen.io/immad-hamid/pen/jVNvQO(注意:他使用了 FontAwesome 4)。

4

3 回答 3

33

图标不再作为字体中的字形引用,而是作为内联 SVG 注入。图标的内容颜色定义为fill="currentColor"

设置背景和使用的技术-webkit-background-clip不再有效。相反,您可以color直接设置属性。color不幸的是,由于不支持渐变,因此您会遇到一些麻烦。fill如果您使用 SVG 渐变定义,则可以改为设置:

body{
  background: black;
}
div {
  display:flex;
  justify-content:center;
  font-size:50px;
  color: white;
}

div:hover svg * {
  fill: url(#rg);
}
<script src="https://use.fontawesome.com/releases/v5.0.1/js/all.js"></script>
<svg width="0" height="0">
  <radialGradient id="rg" r="150%" cx="30%" cy="107%">
    <stop stop-color="#fdf497" offset="0" />
    <stop stop-color="#fdf497" offset="0.05" />
    <stop stop-color="#fd5949" offset="0.45" />
    <stop stop-color="#d6249f" offset="0.6" />
    <stop stop-color="#285AEB" offset="0.9" />
  </radialGradient>
</svg>
<div>
<i class="fab fa-instagram" aria-hidden="true"></i>
</div>

渐变r的属性不能用与 CSS 相同的术语来表达,所以这里有点估计。

注意选择器div:hover svg *。这样,它会覆盖元素上的属性。它需要直接引用样式元素,如果继承该样式,fill="currentColor"将具有更高的特异性。

于 2017-12-13T20:23:00.473 回答
0

我能够按照这个答案使其工作以提出解决方案。关键是使用 FontAwesome 中的遮罩功能。例如,在VueJs中,对于 instagram 图标,我们可以使用下面的代码:

<font-awesome-icon :icon="['fab', 'instagram-square']" :class="icon" :mask="['fas', 'square-full']" />

.icon {
    color: white;
    background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285aeb 90%);
    background: -webkit-radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285aeb 90%);
}

所有积分都归于相关评论的用户 sylvainDNS。

于 2021-11-22T20:38:01.343 回答
-4

像这样使用

i.fab {
    background: linear-gradient(to right, #8490ff 0%, #62bdfc 70%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}
于 2019-12-10T21:12:18.393 回答