在服务器端有数据:
$arr[0]['title'] = 'John Smith';
$arr[0]['photo'] = 'img/John Smith.svg';
根据该数据,计算出字符图标的颜色:
$color = '#'.mb_substr(md5($arr[0]['title']),0,3);
根据这些数据,形成了代码:
<style>
.pic {
background-image: url(".$arr[0]['photo'].");
fill: ".$color.";
}
</style>
<h2>".$arr[0]['title']."</h2>
<div class="pic">
</div>
如果将 SVG 图像添加到 HTML 内联或 Base64 中,则不会有问题。
但是当它在文件中给出时如何着色呢?
UPD:.pic {--svg-color: ".$color."}
在css和svg文件中注册似乎是一个优雅的解决方案style="fill: var(--svg-color)"
,但是当图片是背景时它不起作用。(
如果使用标签将 SVG 图标添加为单独的文件
<img>
,则与使用 CSS 规则添加无法应用颜色更改的位图相同。只能改变颜色background
。但是有一种方法可以使用过滤器
CSS
或SVG
假设添加了钥匙图标
<img>
:使用各种 css 过滤器,我们改变图标的颜色:
例如,如果 svg 文件添加了背景图像:
悬停时更改颜色的选项
是什么阻止您使用内联样式,并为您的 $color 已经收到的 html 文件着色?就像是
<div class="pic"><svg ... fill=".$color."></svg></div>