html - SVG viewBox 缩放和裁剪

标签 html svg crop scaling

如何从 SVG 中输出某个地方并对其进行缩放?

E.例如,我有以下带有 SVG 的 HTML(代码的副本及其渲染位于 http://jsfiddle.net/5e0pas9m/ )。

<div style="border: 1px solid black;">1
<svg width="100" height="100" viewBox="0 0 200 200" style="border: 1px solid red; transform: scale(1);" preserveAspectRatio="xMidYMid none">
  <rect width="100%" height="100%" style="fill:rgb(200,200,255);stroke-width:4;stroke:rgb(100,100,255)" />
  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
  <circle cx="150" cy="150" r="40" stroke="red" stroke-width="4" fill="yellow" />
</svg>
</div>

<div style="border: 1px solid black;">2
<svg width="100" height="100" viewBox="0 0 100 100" style="border: 1px solid red; transform: scale(1);" preserveAspectRatio="xMidYMid none">
  <rect width="100%" height="100%" style="fill:rgb(200,200,255);stroke-width:4;stroke:rgb(100,100,255)" />
  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
  <circle cx="150" cy="150" r="40" stroke="red" stroke-width="4" fill="yellow" />
</svg>
</div>

<div style="border: 1px solid black;">3
<svg width="100" height="100" viewBox="100 100 200 200" style="border: 1px solid red; transform: scale(1);" preserveAspectRatio="xMidYMid none">
  <rect width="100%" height="100%" style="fill:rgb(200,200,255);stroke-width:4;stroke:rgb(100,100,255)" />
  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
  <circle cx="150" cy="150" r="40" stroke="red" stroke-width="4" fill="yellow" />
</svg>
</div>

<div style="border: 1px solid black;">4
<svg width="100" height="100" style="border: 1px solid red; transform: scale(1);" preserveAspectRatio="xMidYMid none">
  <g transform="scale(1), translate(-100 -100)">
  <rect width="100%" height="100%" style="fill:rgb(200,200,255);stroke-width:4;stroke:rgb(100,100,255)" />
  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
  <circle cx="150" cy="150" r="40" stroke="red" stroke-width="4" fill="yellow" />
  </g>
</svg>
</div>

div-1 显示我的完整图像。

如果我只想在同一个窗口中显示左上角,我会设置 viewBox="0 0 100 100"(div-2),它大致给出了我想要的:适合窗口的图像部分.

但是当我对右下角(div-3 代表 viewBox="100 100 200 200")做同样的事情时,图像仅被平移,但没有适合/缩放/缩放。

div-4 nealry 展示了我通过另一种技术实现目标的示例。

最佳答案

viewBox的第三个和第四个参数是width和height,不是maxX和maxY。所以右下示例的 viewBox 应该是“100 100 100 100”。

关于html - SVG viewBox 缩放和裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27101432/

相关文章:

html - :hover Internet Explorer 的兄弟选择器非常慢

javascript - 适用于网络和移动设备的响应式视频介绍全屏

html - 让文本跨越图像

html - 如何使 <a> 内具有悬停效果的 SVG 图像可点击

css - 相对于视口(viewport)的 SVG 背景图像

css - 为什么 filter(drop-shadow) 导致我的 SVG 在 Safari 中消失?

javascript - svg在jquery中使用标签不返回自关闭

java - Android自定义相机 - 在矩形内裁剪图像

php - PHP 中的图像裁剪产生空白结果

javascript - 使用 jquery 裁剪 SVG View 框