左右对齐 SVG 以创建并排图像
Align SVG's left and right to create side-by-side image
我正在尝试将 tunnel1 和 tunnel2 并排放置,以便它们并排显示相同的图像,并且大小相同。抱歉初学者问题,谢谢。
目前我有
<svg
version="1.1"
baseProfile="full"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
style="position: fixed; width: 100%; height: 100%; margin: 0;">
<!--== TUNNEL ===============================================================-->
<svg id="tunnel1"
width="50%" height="50%"
preserveAspectRatio="xMidYMid meet"
viewBox="-100 -100 200 200"
visibility="hidden">
</svg>
<svg id="tunnel2"
width="50%" height="50%"
preserveAspectRatio="xMidYMid meet"
viewBox="-100 -100 200 200"
visibility="hidden">
</svg>
</svg>
您还没有为子 SVG 提供任何内容,因此不清楚您到底想做什么。
我添加了一些矩形并移除了 visibility="hidden"
以便它们可见。唯一剩下的就是将第二个 SVG 放置在右侧,这很容易通过设置 x="50%"
.
来实现
<svg
version="1.1"
baseProfile="full"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
style="position: fixed; width: 100%; height: 100%; margin: 0;">
<!--== TUNNEL ===============================================================-->
<svg id="tunnel1"
width="50%" height="50%"
preserveAspectRatio="xMidYMid meet"
viewBox="-100 -100 200 200">
<rect x="-100" y="-100" width="200" height="200" fill="red"/>
</svg>
<svg id="tunnel2"
x="50%"
width="50%" height="50%"
preserveAspectRatio="xMidYMid meet"
viewBox="-100 -100 200 200">
<rect x="-100" y="-100" width="200" height="200" fill="green"/>
</svg>
</svg>
只要文档的高度大于宽度,这就可以工作(框将彼此相邻)。如果页面比正方形宽,那么两个子 SVG 也会宽,因为您已将它们的宽度和高度设置为 50%。
一般有两种解决方法:
(a) 给最外层的 SVG 设置一个正方形或高的尺寸,或者
(b) 对齐子 SVG,使它们紧靠顶部中间点。
您使用 preserveAspectRatio
属性实现 (b)。将左侧的子 SVG 定位在其视口的右上角 (xMaxYMin"),将右侧的子 SVG 定位在其视口的左上角 (xMinYMin")。
<svg
version="1.1"
baseProfile="full"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
style="position: fixed; width: 100%; height: 100%; margin: 0;">
<!--== TUNNEL ===============================================================-->
<svg id="tunnel1"
width="50%" height="50%"
preserveAspectRatio="xMaxYMin meet"
viewBox="-100 -100 200 200">
<rect x="-100" y="-100" width="200" height="200" fill="red"/>
</svg>
<svg id="tunnel2"
x="50%"
width="50%" height="50%"
preserveAspectRatio="xMinYMin meet"
viewBox="-100 -100 200 200">
<rect x="-100" y="-100" width="200" height="200" fill="green"/>
</svg>
</svg>
我正在尝试将 tunnel1 和 tunnel2 并排放置,以便它们并排显示相同的图像,并且大小相同。抱歉初学者问题,谢谢。
目前我有
<svg
version="1.1"
baseProfile="full"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
style="position: fixed; width: 100%; height: 100%; margin: 0;">
<!--== TUNNEL ===============================================================-->
<svg id="tunnel1"
width="50%" height="50%"
preserveAspectRatio="xMidYMid meet"
viewBox="-100 -100 200 200"
visibility="hidden">
</svg>
<svg id="tunnel2"
width="50%" height="50%"
preserveAspectRatio="xMidYMid meet"
viewBox="-100 -100 200 200"
visibility="hidden">
</svg>
</svg>
您还没有为子 SVG 提供任何内容,因此不清楚您到底想做什么。
我添加了一些矩形并移除了 visibility="hidden"
以便它们可见。唯一剩下的就是将第二个 SVG 放置在右侧,这很容易通过设置 x="50%"
.
<svg
version="1.1"
baseProfile="full"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
style="position: fixed; width: 100%; height: 100%; margin: 0;">
<!--== TUNNEL ===============================================================-->
<svg id="tunnel1"
width="50%" height="50%"
preserveAspectRatio="xMidYMid meet"
viewBox="-100 -100 200 200">
<rect x="-100" y="-100" width="200" height="200" fill="red"/>
</svg>
<svg id="tunnel2"
x="50%"
width="50%" height="50%"
preserveAspectRatio="xMidYMid meet"
viewBox="-100 -100 200 200">
<rect x="-100" y="-100" width="200" height="200" fill="green"/>
</svg>
</svg>
只要文档的高度大于宽度,这就可以工作(框将彼此相邻)。如果页面比正方形宽,那么两个子 SVG 也会宽,因为您已将它们的宽度和高度设置为 50%。
一般有两种解决方法:
(a) 给最外层的 SVG 设置一个正方形或高的尺寸,或者 (b) 对齐子 SVG,使它们紧靠顶部中间点。
您使用 preserveAspectRatio
属性实现 (b)。将左侧的子 SVG 定位在其视口的右上角 (xMaxYMin"),将右侧的子 SVG 定位在其视口的左上角 (xMinYMin")。
<svg
version="1.1"
baseProfile="full"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
style="position: fixed; width: 100%; height: 100%; margin: 0;">
<!--== TUNNEL ===============================================================-->
<svg id="tunnel1"
width="50%" height="50%"
preserveAspectRatio="xMaxYMin meet"
viewBox="-100 -100 200 200">
<rect x="-100" y="-100" width="200" height="200" fill="red"/>
</svg>
<svg id="tunnel2"
x="50%"
width="50%" height="50%"
preserveAspectRatio="xMinYMin meet"
viewBox="-100 -100 200 200">
<rect x="-100" y="-100" width="200" height="200" fill="green"/>
</svg>
</svg>