我是否只能在#id
或<img>
标签中加载SVG的一部分(可以由<object>
标记)?
原因(如果需要的话)是,如果我仅使用一部分已使用的SVG文件,那么我不想拥有两个。
如果不能使用这些标记,可以使用CSS或其他方式吗?
答案 0 :(得分:1)
请在视图源中查看this svg file。在根svg中,还有另外两个svg元素。这2个svg元素每个都有一个id,该样式表示nestedsvg元素仅在:target
时可见。
svg > svg:not(:target) {
display: none;
}
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100px" height="100px" viewBox="0 0 225 225">
<style type="text/css">
<![CDATA[
svg > svg:not(:target) {
display: none;
}
]]>
</style>
<desc>
<g id="cat">
<path id="body" fill-rule="evenodd" clip-rule="evenodd" d="M121.506,..."/>
<path id="head" fill-rule="evenodd" clip-rule="evenodd" d="M129.747,..."/>
</g>
</desc>
<svg version="1.1" id="blackcat" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 225 225">
<use xlink:href ="#cat" fill="black" />
</svg>
<svg version="1.1" id="redcat" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 225 225">
<use xlink:href ="#cat" fill="red" />
</svg>
</svg>
以下是将这些svg元素之一用作图像或对象的方法:
<img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/cat.svg#redcat" width="200" />
<object width="200" data="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/cat.svg#blackcat"></object>
答案 1 :(得分:1)
您想要实现的目标是使用另一个内联SVG(而不是<img>
或<object>
标签)最简单:
<svg style="width:200px;height:200px" viewBox="35 50 150 150">
<use xlink:href="myFile.svg#head" />
</svg>
您需要做的两件事是正确的
viewBox
:要获取所需的SVG部分,您必须确定路径在何处以及其具有的边界框。 <use>
元素会确保只有您选择的元素可见,但不会标识该图像在图像中的位置。