【问题标题】:SVG shows content outside of viewBox when it fills whole browser window当 SVG 填满整个浏览器窗口时,它会在 viewBox 之外显示内容
【发布时间】:2017-06-07 19:55:13
【问题描述】:

我想让内联 SVG 填充浏览器窗口的整个宽度。 SVG 在 vi​​ewBox 之外有一些内容。这是 SVG 文件:http://pastebin.com/F5irDNai

当我将宽度设置为 100% 时,viewBox 之外的内容变得可见:

svg {
  width: 100%;
}

看到这个jsfiddle:https://jsfiddle.net/3w2hy8kv/1/ 红色矩形是 viewBox 的边界。

我想要的是让 SVG 的 viewBox 水平填充整个浏览器窗口,而不会出现 viewBox 之外的内容。这可能吗?

【问题讨论】:

  • 不会溢出:隐藏;工作吗?
  • 不,我在父元素、body 和 svg 本身上都试过了,我没有隐藏 viewBox 之外的内容。每当宽度大于 viewBox 时,就会出现 viewBox 之外的内容。
  • 您需要查看 preserveAspectRatio 属性。还可以尝试在 div 上设置边框以查看其位置。其他要寻找的东西:svgomg 来优化你的 svg,sara souedan 关于 preserveAspectRatio 的文章。最接近我在 svg 元素上使用 preserveAspectRatio="xMinYMid slice" 得到的结果
  • 溢出:隐藏剪辑到视口而不是视图框...您可以使用clipPath 剪辑到视图框...stackoverflow.com/questions/24074216/…
  • @Ruskin:preserveAspectRatio 是关键。谢谢!

标签: html css svg


【解决方案1】:

感谢@Ruskin 和SVG viewbox showing showing off-screen items 让我找到了正确的方向。

添加到 svg 元素的属性:

preserveAspectRatio="xMidYMin slice"

它也适用于使用 JavaScript 添加此属性。

CSS:

html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}

#theSVG svg {
  width: 100%;
  height: 100%;
}

查看更新的小提琴:https://jsfiddle.net/74cc07m1/1/

编辑: 使用优化的 SVG 更新小提琴:https://jsfiddle.net/74cc07m1/2/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-20
  • 1970-01-01
  • 2014-12-26
  • 2015-09-07
  • 2018-04-22
  • 1970-01-01
  • 2011-07-18
相关资源
最近更新 更多