html - 将过滤器添加到另一个 SVG 图像内的 SVG 图像
问题描述
我有以下标记:
<svg>
<img src="path/to/another/image.svg" />
</svg>
应用过滤器img
似乎不起作用。有什么解决办法吗?
解决方案
为什么要在 svg 元素中包装 HTML img 标签?——迈克尔·穆兰尼
HTML 标签<img>
需要从 svg 中渲染出来。只有过滤器定义应该保留在 svg 中。
下面是一个使用单独SVG
文件上传到服务器的示例,该文件使用<img>
标签 添加到 HTML 标记中
过滤器应用于文件 svg<feFlood flood-color =" #35B62E"/>
以进行绿色着色
我过去常常<feOffset dy =" 150 ">
在形状上部分绘画。
img {
filter:url(#filter1);
}
<img src="https://svg-art.ru/files/Face.svg" width="371" height="348" >
<svg version="1.1" width="371" height="348" viewBox="0 0 371 348" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="filter1" x="0%" y="0%">
<feFlood flood-color="#35B62E" />
<feOffset dy="150">
</feOffset>
<feComposite operator="in" in2="SourceGraphic" />
<feComposite operator="over" in2="SourceGraphic" />
</filter>
</defs>
</svg>
下面是一个示例<feFlood flood-color
,当您将光标悬停时,使用两个过滤器来获得颜色变化
img {
filter:url(#filter_G);
}
img:hover {
filter:url(#filter_R);
}
<img src="https://svg-art.ru/files/Face.svg" width="371" height="348" >
<svg version="1.1" width="371" height="348" viewBox="0 0 371 348" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="filter_G" x="0%" y="0%">
<feFlood flood-color="#35B62E" />
<feOffset dy="150">
</feOffset>
<feComposite operator="in" in2="SourceGraphic" />
<feComposite operator="over" in2="SourceGraphic" />
</filter>
<filter id="filter_R" x="0%" y="0%">
<feFlood flood-color="red" />
<feOffset dy="65">
</feOffset>
<feComposite operator="in" in2="SourceGraphic" />
<feComposite operator="over" in2="SourceGraphic" />
</filter>
</defs>
</svg>
推荐阅读
- reporting-services - 请求失败,HTTP 状态为 401:未经授权使用 DynamicsReports
- terraform - terraform 错误 - 未知筛选键:MSRC_SEVERITY
- javascript - 我面临一个错误 ReferenceError: Paginator is not defined
- javascript - 某些字符的正则表达式以及之后的任何内容
- ibm-mq - 使用 Syncpoint 的 IBM MQ 提交保留
- flutter - 如何使链接在安装在 Flutter 上的应用程序中打开 Instagram 页面
- file-upload - 如何以编程方式打开羽毛笔图像上传器?
- python - 为什么在运行时python show file not found 错误?
- list - 如何在 dart/flutter 中对自定义对象使用对象比较
- c++ - 为什么我的选择功能不起作用?它的返回 -1 和错误代码是 10038