【问题标题】:How to get ScrollBars in SVG?如何在 SVG 中获取滚动条?
【发布时间】:2013-01-16 05:45:50
【问题描述】:

我有一个 SVG 元素,里面有很多元素。 SVG 元素有一个视图框,因此您可以按下缩放按钮,元素看起来更大或更小。效果很好。现在的问题是,当元素溢出父 SVG 元素时,不会出现 ScrollBars。

示例:

<div width="100%" height="100%">
<svg height="100%" width="100%" style="overflow-x: auto; overflow-y: auto; "viewBox="0 0 793 1122">
<g>
...
<line y2="44.9792mm" y1="44.9792mm" x1="197.203mm" x2="12.7028mm"></line>
<line y2="44.9792mm" y1="44.9792mm" x1="197.203mm" x2="12.7028mm"></line>
<text x="43.4516mm" y="52.9167mm" style="font-size: 11pt;">S</text>
<rect x="0" width="210mm" y="0" height="297mm"></rect>
...
</g>
</svg>
</div>

//here I set the viewbox after clicking the zoomOut-Button
float width = svg.getViewBox().getBaseVal().getWidth();
float height = svg.getViewBox().getBaseVal().getHeight();

svg.getViewBox().getBaseVal().setHeight((float) (height / 0.9));
svg.getViewBox().getBaseVal().setWidth((float) (width / 0.9));

有人可以帮助我吗? 我将溢出属性放在 svg 和 div 标签中。不工作。

【问题讨论】:

标签: html css svg


【解决方案1】:

尝试让 SVG 元素大于 div,并让 div 使用滚动处理溢出。

例如,看这个jsfiddle,它利用了以下css:

div#container {
  height: 400px;
  width: 400px;
  border:2px solid #000;
  overflow: scroll;
 }
svg#sky {
  height: 100px;
  width: 1100px;
  border:1px dotted #ccc;
  background-color: #ccc;
}

【讨论】:

  • 亲爱的 Akhilesh,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
【解决方案2】:

SVG 的部分意义在于它可以缩放以适应屏幕。但是,我认为如果你想得到你所描述的东西,那么你需要将明确的widthheight 设置为svg 元素。像http://jsfiddle.net/qTFxJ/13/ 这样我将widthheight 设置为像素以匹配您的viewBox 大小。

【讨论】:

  • 谢谢。我更新了代码,但现在看起来并不好。这是代码:jsfiddle.net/qTFxJ/17.
  • 我不知道你说的不好是什么意思。我看到滚动条,这正是你想要的。我不知道你最后的“样子”应该是什么。我确实注意到您的示例没有像我的那样将 svg 元素的宽度/高度设置为与 viewBox 相同的数字。我不知道这是否是你的看起来不像你期望的那样。
  • 好的,我尝试再次描述我的问题。示例:jsfiddle.net/qTFxJ/18 我有一个固定宽度和高度(400 像素)的 svg 元素。我还有一个视图框,可以使 svg 元素内的元素变大或变小。在此示例中,我的矩形宽度/高度为 400 像素,x/y 坐标为 40 像素。所以你不能完全看到矩形。现在我想在 svg 元素中获取滚动条以完整地查看矩形。
  • @snapple--我不知道为什么几个月前你发布它时我错过了它。不管怎样,最近的活动把我的注意力拉回来了。您需要做的是始终将视图框缩放到您需要在其上显示项目的大小,然后将您的包装器div 设置为固定的widthheightoverflow: auto。见jsfiddle.net/qTFxJ/30
  • @ScottS 当你说“你想做什么”时,你的真正意思是“因为浏览器坏了你需要做什么”?
猜你喜欢
  • 2018-07-03
  • 1970-01-01
  • 2012-11-05
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 2014-02-23
相关资源
最近更新 更多