如何在SVG中获取ScrollBars?

sna*_*ple 30 html css svg

我有一个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>
Run Code Online (Sandbox Code Playgroud)
//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));
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?我把溢出attribut放在svg和div标签中.不起作用.

Akh*_*esh 38

尝试使SVG元素大于div,让div使用scroll处理溢出.

例如,请参阅此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;
}
Run Code Online (Sandbox Code Playgroud)


Sco*_*ttS 5

SVG的一部分是它可以扩展以适应屏幕.不过,我认为,如果你想要得到的东西像你所描述的,那么你就需要制定明确的widthheightsvg元素.像http://jsfiddle.net/qTFxJ/13/这样的地方,我设置widthheight像素一样匹配你的viewBox大小.

  • @ snapple - 我不知道为什么我几个月前发布它时错过了这个.无论如何,最近的活动引起了我的注意.你需要做的是始终将视图框缩放到显示它上面的项目所需的大小,然后将你的包装器`div`设置为固定的`width`和`height`和`overflow:auto`.见http://jsfiddle.net/qTFxJ/30/. (2认同)