您是否厌倦了使用icoMoon来维护您的SVG图标?虽然它是管理图标的绝佳工具,但其用户界面可能会留出很多不足的信息。最重要的是,您可能正在寻求减少对第三方工具的依赖。如果是这样,CDN可以是完美的解决方案。
但是,从Icomoon转换为CDN可以带来一些您应该知道的更改。 CDN不使用基于字体的方法,需要将图标添加为图像。交付和显示的这种转变可能需要一些习惯,但不应影响图标本身的功能。
基于Icomoon字体的方法
在这种方法中,我们使用 icomoon classNames渲染svg图标。
我们可以使用这样的CSS更改SVG图标的颜色。 ð
.icomoon-logo {
color: red;
}
带有HTML <img>
元素方法的SVG
在这种方法中,我们使用 img 标签来渲染SVG图标。
但是,当我们与 html img 标签一起使用时,我们无法使用CSS更改SVG图标的颜色。这是不起作用的!
我们将SVG图标放在 src 属性中
<img src="https://cdn.dsmcdn.com/example-icon.svg" alt="example-icon" />
我们如何更改svg <img>
图标的颜色?
1-骇人听闻的方式
我们可以使用骇人听闻的方式来处理这样的方法。 ð
此过滤器能够更改SVG HTML <img>
元素的颜色,但您需要通过试用方法找到所需的颜色。
img: {
filter: invert(20%) sepia(243%) saturate(1576%) hue-rotate(-21deg) brightness(137%) contrast(73%);
}
这是您可以使用它但不是最好的方法!
此时我们还能做什么?让我向您介绍 css mask !
2- CSS面具
我认为, css蒙版是解决此问题的理想解决方案。通过使用 mask-image 属性,我们可以像字体一样渲染SVG图像。为此,我们需要为SVG图标创建 css类。
这是SVG图标的CSS类。 ð
.icon {
mask-size: 100%;
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
mask-position: center;
width: 24px;
height: 24px;
}
然后,我们将使用 mask-image 属性来像字体一样呈现SVG图像。但是我们将用 React 动态定义它。 ð
我们还需要定义 webkitmaskimage safari 浏览器。
const MenuItem = ({ SvgIcon, selectedName, link }: MenuItemProps) => {
return (
<a className={cn("menu-item", selectedName === "my_coupons" && "active")} href={link}>
<div className="icon" style={{ maskImage: `url(${SvgIcon})`, WebkitMaskImage: `url(${SvgIcon})` }} />
<p className="name">"My Coupons"</p>
</a>
);
};
就是这样!现在,我们可以使用这样的CSS更改SVG图标的颜色。 ð
.icon {
background-color: red;
}
让我们看一下结果。 ð
结论
在本文中,我们学会了如何使用字体之类的SVG图像。我们学会了如何使用CSS更改SVG图像的颜色。我们还学会了如何使用HTML <img>
标签使用SVG图像。希望您喜欢这篇文章。如果您有任何疑问,请在评论中告诉我。感谢您的阅读!