SVG图像未使用参数


SVG Image not using parameter

我正试图创建一个接受参数的SVG,但由于某些原因,它没有应用它们。。。

我有以下SVG文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="1" height="1"
     xmlns:svg="http://www.w3.org/2000/svg"
     xmlns="http://www.w3.org/2000/svg"
     version="1.1">
    <defs>
        <ref id="paramFill" param="color" default="#000000"/>
        <ref id="paramOpacity" param="opacity" default="1"/>
    </defs>
    <polygon points="0,0 1,0 1,1 0,1"
         style="fill:url(#paramFill);fill-opacity:url(#paramOpacity);fill-rule:evenodd;" />
</svg>

调用SVG文件的PHP看起来是这样的,但当图像显示在页面上时,我会得到一个全黑图像。为什么不使用我的参数?应该只创建两种颜色:#9999FF#FFFFFF为什么使用默认颜色?

<?php
// Inside a loop:
$color = ($chi == $i && $chj == $j) ? "#9999FF" : "#FFFFFF";
echo "<td style='background-image: url(/Websites/test.org/images/bg.svg?color=$color);'></td>";

您正在将#填充到url中。#(您的颜色值)之后的任何内容都不会被视为颜色值,而是被视为页面锚点引用。

... url(/.....?color=#9999ff); ...
                     ^---anchor

浏览器将获取

... url(/....?color=)

如果它是一个HTML页面,那么它会尝试向下滚动到<a name="9999ff">,这在svg上是不可能的。

至少尝试urlencode()

...?color=%239999ff
          ^^^---url-encoded #