我正在开发一个生成超强密码的项目(用于练习)。
当使用内联SVG时,我只是想知道SVG代码是否有任何不必要的属性,因为我试图让它尽可能短。
在这个特定的片段中,我有一个复制到剪贴板的图标。
以下是代码:
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 488.3 488.3" style="enable-background:new 0 0 488.3 488.3;" xml:space="preserve">
<g>
<g>
<path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124
C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124
c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/>
<path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227
c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6
V38.6C439.65,17.3,422.35,0,401.05,0z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
答案 0 :(得分:2)
让我们从通常多余的东西开始:
version="1.1"
不会被我所知道的任何浏览器或渲染器解释。style="enable-background:new 0 0 488.3 488.3;"
虽然一般情况下设置一个样式属性可能不错,但enable-background
属性为deprecated且从未在任何地方实施以下可能会或可能不会取决于具体情况:
<?xml version="1.0" encoding="iso-8859-1"?>
必须是符合XML的独立SVG的第一行。请注意,编码不是默认值utf-8
。如果SVG在HTML中内联使用,浏览器只会忽略该行(如果它不是文档的第一行),但严格来说,它在任何其他地方的使用都会破坏XML格式。xmlns:xlink="http://www.w3.org/1999/xlink"
只有在某个地方使用了元素/属性时才需要定义命名空间,例如<use xlink:href="..." />
。即便如此,现在大多数浏览器都支持无名称空间href
。xml:space="preserve"
仅在您拥有<text>
个孩子的<tspan>
元素时才有用。然后它将管理这些子标记之间的空格是否被解释为空格字符。x="0px" y="0px"
在独立文件中最外层的<svg>
元素上,始终忽略x和y。如果SVG嵌入在其他内容中,则默认值0以外的值可能会生效,具体取决于主机语言。 (在HTML中,您可能不得不使用CSS top
和left
。)最后,遗漏了什么:
width
和height
的默认值为150px
和100px
。 (对于独立文件,viewBox
值将在缺失时使用。)preserveAspectRatio
的默认值为xMidYMid meet
。如果viewBox
,width
和height
的宽高比不匹配,它会定义viewBox
如何适应SVG尺寸。