下面是我将在示例中使用的徽标的端点:https://rdanhgsjebvnzzvsohyx.supabase.co/storage/v1/object/public/assets/logos/logoaidvisor-purple.svg
因此,导入SVG并将其呈现为图像,然后使用Tailwind CSS对其进行样式化,效果非常好:
<img src="https://rdanhgsjebvnzzvsohyx.supabase.co/storage/v1/object/public/assets/logos/logoaidvisor-purple.svg" alt="logo" class="w-28 sm:w-48 md:w-60" />
然而,我找不到一种方法来修改SVG,因为我将能够做的“正常”SVG。
- 注:我正在一个svelte项目中工作,但我希望找到一个通用的解决方案,无论框架等。*
我试着给图像赋予id通常给予SVG的属性,比如fill:
<img src="https://rdanhgsjebvnzzvsohyx.supabase.co/storage/v1/object/public/assets/logos/logoaidvisor-purple.svg" alt="logo" class="w-28 sm:w-48 md:w-60" fill="#222" />
我以为那会奏效,但事实并非如此。经过大量的研究,我仍然找不到解决办法。
2条答案
按热度按时间m0rkklqb1#
如果想影响SVG,就不能使用
img
,直接内联SVG,这样就可以应用样式,因为它会生成样式所针对的必要元素。具体的操作方式取决于您的生成系统;很多都有方法导入文件作为字符串内容,所以你可以和
{@html ...}
一起使用。如果SVG来自DB,你可以创建一个API,然后fetch
从那里导入内容。(Note SVG可能会执行脚本,因此对于其他任何内容,只能使用具有安全/净化内容的
@html
。)arknldoa2#
您还可以使用外部
<use>
元素-在方便性方面类似于<img>
元素。<symbol>
元素中并应用ID。<path>
元素中删除填充属性,并将其添加到<use>
元素中viewBox
属性复制到父svg示例
局限性:严格CORS政策
外部
<use>
引用必须托管在同一个域中-否则浏览器将由于跨源安全性设置而阻止它们。其他功能,如梯度,遮罩,剪辑路径等也可能无法工作。
对于像徽标或图标这样的简单用例,它仍然是
<img>
的合适替代品。但是,您可以使用svgxuse之类的注入/内联脚本