在 HTML 中放置和显示单个图形 svg 的两种简约方式

Two Minimalistic Ways to place and display a single-graphic svg in HTML

// Updated question, skip the comments section, since all hints are implemented here //

给定一个简单的 svg 文件 logo.svg,其中包含 只有 1 个图形 (!) 和一个 html 页面我们想要将图形放入的地方,用尽可能少的代码以最简约的方式...


方法一:完美!但没有缓存,因为整个 svg 在 html 来源中变为内联:

<? include("logo.svg")?>

方法二:破解!当文件存在时呈灰色 "image missing icon" 并显示为 xml 文件,如 here

<img src="logo.svg" />


添加到 .htaccess 但仍然是完全相同的问题! (下图)

# interpret svg files as image instead of xml
AddType image/svg+xml svg svgz
AddEncoding gzip svgz

最后一步:如何将带有 svg 内容的外部文件显示为图形,而不是 xml?


logo.svg

<svg  viewBox="0 0 200 200"  id="svglogo">
<path d="m151.4 63.7c0.2 0 23.5 2 37.7-10.9 6.6-6 10.3-14.3
         11-24.7v-28.1h-200.1v31.9c0.7 10.4 4.4 18.7 11 247" />
</svg>

经过大量尝试并与为什么其他 svg 工作而我的干净 svg 没有工作的原因进行比较后,似乎所有设置都正确(甚至 .htaccess 文件)除了:

<svg viewBox="0 0 200 200" id="svglogo">  // svg shows as numeric xml 

必须是:

<svg viewBox="0 0 200 200" id="svglogo"
     version="1.1"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns="http://www.w3.org/2000/svg"
>

设置这三个额外参数后,svg 显示为图形。 实际上第四行也是最后一行是必不可少的部分。如果没有这一行,所有内容都将按照原始问题读取:无聊 xml 数据 sheet。有了它,它就变成了图形!可以删除其他两行(第二行和第三行),只要最后一行就位,图形就会显示。