📜  offsetcolor svg (1)

📅  最后修改于: 2023-12-03 15:18:05.899000             🧑  作者: Mango

OffsetColor SVG

简介

OffsetColor SVG 是一种使用偏移量调整 SVG 图像颜色的技术。它可以使 SVG 图像在不改变 SVG 的基本结构的情况下,达到变色的效果。使用 OffsetColor SVG,您可以轻松地改变 SVG 图像的颜色,而无需制作多个版本的图像。

原理

OffsetColor SVG 需要使用两个 SVG 的图像:第一个图像是架子,第二个图像是颜色值。首先,我们将一个图像的轮廓和路径添加到我们的HTML文档中。接下来,我们通过 CSS 使颜色值的图像偏移位置。 然后,在颜色值的 SVG 中,首先要描绘颜色图案,然后为图案添加滤镜。在滤镜中,我们添加一个 calc 颜色值函数,使用 calc 函数的值来确定颜色的位置,将颜色与 SVG 主要结构进行重叠。最后,使用 Mix Blend Mode 的颜色值使图像产生最终效果。

用法
HTML 代码
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
  <path class="path1" d="M512 935.5c228.5 0 414.5-186.5 414.5-414.5S740.5 106.5 512 106.5 97.5 292.5 97.5 520s186.5 414.5 414.5 414.5zM445.5 300.5C445.5 268 474 239.5 506.5 239.5s61 29.5 61 61v131h131c32.5 0 61 29.5 61 61s-29.5 61-61 61H567v131c0 32.5-29.5 61-61 61s-61-29.5-61-61V445.5H314c-32.5 0-61-29.5-61-61z" fill="#333333"></path>
</svg>
CSS 代码
.icon .path1 {
  fill: url(#icon-gradient);
}

.icon .path1:hover {
  fill: url(#icon-gradient-hover);
}

#icon-gradient-stop-1 {
  stop-color:#fbb03b;
}

#icon-gradient-stop-2 {
  stop-color:#fcc243;
}

#icon-gradient-stop-3 {
  stop-color:#fdbf5c;
}

#icon-gradient-stop-4 {
  stop-color:#fdc874;
}

#icon-gradient-stop-5 {
  stop-color:#fed48d;
}

#icon-gradient-stop-6 {
  stop-color:#feeda5;
}

.icon .path1 {
  fill: url(#icon-gradient);
}

.icon .path1:hover {
  fill: url(#icon-gradient-hover);
}

#icon-gradient {
  widows: 100%;
  height: 100%;
  stop-colors: var(--icon-gradient-stop-colors);
}

#icon-gradient:hover {
  opacity: var(--icon-gradient-hover-opacity);
}

#icon-gradient-hover {
  widows: 100%;
  height: 100%;
  stop-colors: var(--icon-gradient-hover-stop-colors);
}
代码片段
```
```css
.icon .path1 {
  fill: url(#icon-gradient);
}

.icon .path1:hover {
  fill: url(#icon-gradient-hover);
}

#icon-gradient-stop-1 {
  stop-color:#fbb03b;
}

#icon-gradient-stop-2 {
  stop-color:#fcc243;
}

#icon-gradient-stop-3 {
  stop-color:#fdbf5c;
}

#icon-gradient-stop-4 {
  stop-color:#fdc874;
}

#icon-gradient-stop-5 {
  stop-color:#fed48d;
}

#icon-gradient-stop-6 {
  stop-color:#feeda5;
}

.icon .path1 {
  fill: url(#icon-gradient);
}

.icon .path1:hover {
  fill: url(#icon-gradient-hover);
}

#icon-gradient {
  widows: 100%;
  height: 100%;
  stop-colors: var(--icon-gradient-stop-colors);
}

#icon-gradient:hover {
  opacity: var(--icon-gradient-hover-opacity);
}

#icon-gradient-hover {
  widows: 100%;
  height: 100%;
  stop-colors: var(--icon-gradient-hover-stop-colors);
}