width=270и height=300 в шапке вашего svg файла это - viewport
Масштаб svg изображения определяется соотношением viewport / viewBox, при
viewport / viewBox = 1 - изображение будет иметь масштаб 1:1 (размер оригинала)
<svg width = "270" height="300" viewBox="0 0 270 300">
viewport / viewBox > 1 - изображение будет увеличено
Как в вашем первом примере:
<svg width="270" height="300" viewBox="0 0 130 150" version="1.1">
(270 / 130 = 2 и 300 / 150 = 2) Изображение увеличено в два раза по сравнению с оригиналом. Так как один пиксель viewBox растягивается до двух пикселей viewport.
viewport -это пользовательская область просмотра, которая выводится на экран.
viewport / viewBox < 1 - изображение будет уменьшено по сравнению с оригиналом
ваш второй пример:
<svg width="270" height="300" viewBox="0 0 540 600" >
В этом варианте два пикселя viewBox сжимаются до одного пикселя viewport
В третьем примере с обрезкой изображения
<svg width="270" height="300" viewBox="0 0 65 75">
viewBox оказался меньше размера оригинала поэтому захватил только часть изображения и увеличил только эту часть.
В связи с этим возникают интересные возможности:
Анимация начинается при клике по маленькому зелёному прямоугольнику в верхнем левом углу.
body {
padding:0;
margin:0;
}
svg text {
fill:white;
}
<svg id="svg1" width="300" height="300" viewBox="200 200 2700 2700" style="border:1px solid grey;">
<rect id="R1" x="0" y="0" width="100" height="100" fill="#5A9C6E" />
<rect id="R2" x="100" y="0" width="100" height="100" fill="#A8BF5A" />
<rect id="R3" x="200" y="0" width="100" height="100" fill="#FAC46E" />
<rect id="R4" x="0" y="100" width="100" height="100" fill="greenyellow" />
<rect id="R5" x="100" y="100" width="100" height="100" fill="#5A9C6E" />
<rect id="R6" x="200" y="100" width="100" height="100" fill="skyblue" />
<rect id="R7" x="0" y="200" width="100" height="100" fill="#FAC46E" />
<rect id="R8" x="100" y="200" width="100" height="100" fill="yellow" />
<rect id="R9" x="200" y="200" width="100" height="100" fill="#5A9C6E" />
<text x="35" y="55" font-size="24" > R1 </text>
<text x="135" y="55" font-size="24" > R2 </text>
<text x="235" y="55" font-size="24" > R3</text>
<text x="35" y="155" font-size="24" style="fill:grey;" > R4 </text>
<text x="135" y="155" font-size="24" > R5 </text>
<text x="235" y="155" font-size="24" > R6 </text>
<text x="35" y="255" font-size="24" > R7 </text>
<text x="135" y="255" font-size="24" style="fill:grey;" > R8 </text>
<text x="235" y="255" font-size="24" > R9 </text>
<animate attributeName="viewBox" begin="svg1.click+0.25s" values="200 200 2700 2700;0 0 300 300" dur="1.5s" fill="freeze" restart="whenNotActive" />
</svg>
- Тот же принцип, что и в первом примере, но использованы растровые картинки
Анимация начинается при клике.
body {
padding:0;
margin:0;
}
svg {
background: linear-gradient(to right, white 33%, skyblue 90%);
}
svg rect {
fill:none;
stroke:#c3c3c3;
stroke-width:0.5;
}
<svg id="svg1" width="300" height="300" viewBox="200 200 2700 2700" style="border:0px solid grey;">
<rect id="R1" x="0" y="0" width="100" height="100" />
<rect id="R2" x="100" y="0" width="100" height="100" />
<rect id="R3" x="200" y="0" width="100" height="100" fill="#FAC46E" />
<rect id="R4" x="0" y="100" width="100" height="100" fill="greenyellow" />
<rect id="R5" x="100" y="100" width="100" height="100" fill="#5A9C6E" />
<rect id="R6" x="200" y="100" width="100" height="100" fill="skyblue" />
<rect id="R7" x="0" y="200" width="100" height="100" fill="#FAC46E" />
<rect id="R8" x="100" y="200" width="100" height="100" fill="yellow" />
<rect id="R9" x="200" y="200" width="100" height="100" fill="#5A9C6E" />
<image xlink:href="https://i.stack.imgur.com/81zH5.png" x="0" y="0" width="100" height="100" />
<image xlink:href="https://i.stack.imgur.com/g835v.png" x="100" y="0" width="100" height="100" />
<image xlink:href="https://i.stack.imgur.com/naLsU.png" x="200" y="0" width="100" height="100" />
<image xlink:href="https://i.stack.imgur.com/UgIKN.png" x="0" y="100" width="100" height="100" />
<image xlink:href="https://i.stack.imgur.com/Lp3Mv.png" x="100" y="100" width="100" height="100" />
<image xlink:href="https://i.stack.imgur.com/NyyyT.png" x="200" y="100" width="100" height="100" />
<image xlink:href="https://i.stack.imgur.com/VQHVg.png" x="0" y="200" width="100" height="100" />
<image xlink:href="https://i.stack.imgur.com/A0G0r.png" x="100" y="200" width="100" height="100" />
<image xlink:href="https://i.stack.imgur.com/VomF9.png" x="200" y="200" width="100" height="100" />
<animate attributeName="viewBox" begin="svg1.click+0.25s" values="200 200 2700 2700;0 0 300 300" dur="1.5s" fill="freeze" restart="whenNotActive" />
</svg>