Как получить ScrollBars в SVG? - PullRequest
       1

Как получить ScrollBars в SVG?

25 голосов
/ 01 декабря 2011

У меня есть 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. не работает.

Ответы [ 2 ]

36 голосов
/ 12 июля 2012

Попробуйте сделать элемент 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;
}
5 голосов
/ 01 декабря 2011

Частью SVG является то, что он может масштабироваться по размеру экрана. Тем не менее, я думаю, что если вы хотите получить что-то похожее на то, что вы описываете, то вам нужно явно указать width и height для элемента svg. Что-то вроде http://jsfiddle.net/qTFxJ/13/, где я устанавливаю width и height в пикселях, чтобы соответствовать вашему viewBox размеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...