<svg xmlns="http://www.w3.org/2000/svg" width="1200px" height="250px" viewBox="0 0 400 250" id="RoomsSVG">
<svg id="Room101" width="400px" height="250px" x="0px" y="0px">
<rect id="Room101Rect" width="100%" height="100%" fill="orange" stroke="black" stroke-width="5" />
<text id="Room101Label" font-size="24pt" x="55px" y="100px" fill="black">Room 101</text>
<text id="Room101Type" font-size="24pt" x="55px" y="150px" fill="black">Standard office</text>
</svg>
<svg id="Room102" width="400px" height="250px" x="400px" y="0px">
<rect id="Room102Rect" width="100%" height="100%" fill="orange" stroke="black" stroke-width="5" />
<text id="Room102Label" font-size="24pt" x="55px" y="100px" fill="black">Room 102</text>
<text id="Room102Type" font-size="24pt" x="55px" y="150px" fill="black">Standard office</text>
</svg>
<svg id="Room103" width="400px" height="250px" x="800px" y="0px">
<rect id="Room103Rect" width="100%" height="100%" fill="orange" stroke="black" stroke-width="5" />
<text id="Room103Label" font-size="24pt" x="55px" y="100px" fill="black">Room 103</text>
<text id="Room103Type" font-size="24pt" x="55px" y="150px" fill="black">Standard office</text>
</svg>
</svg>
当我尝试在外部svg标记上使用viewBox属性时,viewBox不会裁剪视口但只是移动子项位置。 我想通过使用viewBox和孩子的位置来隐藏溢出的子内容。 我的代码出了什么问题? 请帮助我。
答案 0 :(得分:0)
图形的纵横比(1200:400)与viewBox(400:250)的纵横比不匹配,因此默认设置是保留viewBox内容的aspect ratio并显示更多在图纸中。
您可以添加preserveAspectRatio =&#34; none&#34;但这会扭曲绘图,你可以使它保持AspectRatio =&#34; xMidYMid slice&#34;但这将使绘图更大。
如果您只是希望右侧的内容消失,则需要使用剪辑或剪辑路径将其删除。
答案 1 :(得分:0)
所有viewBox
属性都告诉浏览器如何缩放内容以适合您指定的SVG大小。
在这种情况下,您告诉它缩放房间101的面积,使其适合1200x250的图像(宽度和高度)。默认情况下,这将导致该区域在1200x250区域中水平居中。
房间102仍将在右侧可见(在图像区域中从800到1200)。什么都没有导致它被剪裁。房间103 被剪裁,因为它偏离了右边缘。
如果您只想显示Room 101,那么只需将最外面的SVG设置为width =“400”即可。如果你这样做,房间102将不可见,因为它现在将离开SVG的右边缘。