如何给我的 SVG 图标冠上金色的线性渐变填充(路径)颜色? [复制]

Posted

技术标签:

【中文标题】如何给我的 SVG 图标冠上金色的线性渐变填充(路径)颜色? [复制]【英文标题】:How can I give my SVG icon crown a gold linear-gradient fill (path) color? [duplicate] 【发布时间】:2020-10-11 23:46:42 【问题描述】:

我幼稚的方法没有奏效:

.cIcon 
  width: 48px;
  height: 48px;


#idCrown path 
  fill: linear-gradient(120deg, #e2ad27, #daa520);
<svg id="idCrown" class="cIcon" viewBox="0 0 24 24">
  <path
    d="M5 16L3 5L8.5 10L12 4L15.5 10L21 5L19 16H5M19 19C19 19.6 18.6 20 18 20H6C5.4 20 5 19.6 5 19V18H19V19Z"
  />
</svg>

【问题讨论】:

这能回答你的问题吗? SVG gradient using CSS 谢谢@SimoneRossaini,我已经看过了,它是rect 而不是path,因此很遗憾没有,.. 如何从接受的答案中看出是相同的逻辑;) 你说得对,可能是我的SCSS惹了麻烦 【参考方案1】:

CSS 属性值linear-gradient() 似乎只适用于 html 元素而不适用于 SVG。 Citing MDN on this:

不要与 CSS linear-gradient() 混淆,因为 CSS 渐变只能应用于 HTML 元素,而 SVG 渐变只能应用于 SVG 元素。

作为一种解决方案,将渐变转换为&lt;linear-gradient&gt; 元素,如下所示:

.cIcon 
  width: 48px;
  height: 48px;


#idCrown path 
  fill: url(#gradientCrown);
<svg id="idCrown" class="cIcon" viewBox="0 0 24 24">
  <linearGradient id="gradientCrown" gradientTransform="rotate(120)">
    <stop offset="0%"   stop-color="#e2ad27" />
    <stop offset="100%" stop-color="#daa520" />
  </linearGradient>
  <path
    d="M5 16L3 5L8.5 10L12 4L15.5 10L21 5L19 16H5M19 19C19 19.6 18.6 20 18 20H6C5.4 20 5 19.6 5 19V18H19V19Z"
  />
</svg>

【讨论】:

它作为裸 HTML/CSS 工作,在 SCSS 文件中它没有任何效果,我有点困惑,.. SCSS 是否可能试图解析 url() 值?同样在您的原始代码中,第二个选择器中有一些奇怪的不可见字符。也许这会把事情搞砸。 它仅在路径中有效,在我的情况下(= id-prefix):&lt;path fill="url(#idGradientCrown)".. 顺便说一句:我怎样才能为这个皇冠添加类似“text-shadow”的东西?非常感谢,.. ***.com/a/6094674/1169798

以上是关于如何给我的 SVG 图标冠上金色的线性渐变填充(路径)颜色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何给SVG填充和描边应用线性渐变

D3 SVG 路径未填充线性比例渐变

如何给SVG填充和描边应用径向渐变

Cordova 无法处理的具有线性渐变的 SVG - iOS

svg中线性渐变颜色的悬停事件

SVG渐变