所以,这感觉像是一个简单的问题,但我就是不知道出了什么问题。我想要一个带有条纹颜色背景的 div 元素。为此,我决定尝试编写 SVG,以尽可能接近 W3C 代码。但是,当我尝试应用它时,它似乎不起作用。SVG 图像在其原始代码嵌入网页时确实可以正常显示(当然,没有 XML 和 DOCTYPE 标签),但在用作 CSS 背景时则不正确。为什么 CSS 不将此 SVG 图像设置为 DOM 元素的重复背景?
SVG
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE svg>
<SVG XMLNS="http://www.w3.org/2000/svg" XMLNS:XLINK="http://www.w3.org/1999/xlink" VIEWBOX="0 0 16 16">
<TITLE>Translucent White Stripes</TITLE>
<DESC>Translucent bottom-left-to-top-right diagonal white stripes</DESC>
<POLYGON POINTS="00,16 16,00 08,00 00,08" STYLE="fill:#000000;fill-opacity:0.5"/>
<POLYGON POINTS="08,16 16,08 16,16" STYLE="fill:#000000;fill-opacity:0.5"/>
</SVG>
CSS
.striped {
background-color: red;
background-image: url("http://BHStudios.org/_images/backgrounds/translucentWhiteStripes.svg");
background-size:16px 16px;
background-repeat: repeat;
}
HTML
<!DOCTYPE HTML>
<HTML>
<HEAD>
<TITLE>SVG Test</TITLE>
</HEAD>
<BODY>
<DIV CLASS="striped">Striped</DIV>
</BODY>
</HTML>
这是一个 JSBin,以防万一:http: //jsbin.com/isihuy/3/edit
要修复的编辑
以下是我为修复它所做的代码更改:
SVG
我用 UTF-8 重新编码它,并在 XML 标记中做了一个 not 。我删除了该viewbox
属性并将其替换为height
and width
。我将所有 SVG 标记和属性案例更改为 W3C 指定的案例:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg>
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
<title>Translucent White Stripes</title>
<desc>Translucent bottom-left-to-top-right diagonal white stripes</desc>
<polygon points="00,16 16,00 08,00 00,08" style="fill:#000000;fill-opacity:0.5"/>
<polygon points="08,16 16,08 16,16" style="fill:#000000;fill-opacity:0.5"/>
</svg>
网络配置
事实证明这实际上是最大的问题:application/octet-stream
尽管我在文件中添加了正确mimeMap
的 SVG ,但服务器仍将其作为web.config
. 为了解决这个问题,我必须在它前面加上一个remove
标签:
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".svg" />
<mimeMap fileExtension=".svg" mimeType="image/svg+xml"/>
</staticContent>
</system.webServer>
</configuration>