J'ai un élément SVG avec beaucoup d'éléments à l'intérieur. L'élément SVG a une boîte de visualisation, vous pouvez donc appuyer sur un bouton de zoom et les éléments apparaissent plus ou moins grands. Fonctionne bien. Maintenant, le problème est que, lorsque les éléments dépassent l'élément SVG parent, aucune barre de défilement n'apparaît.
Exemple:
<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));
Est-ce que quelqu'un peut m'aider? J'ai mis l'attribut de débordement dans le svg et aussi dans la balise div. ne fonctionne pas.
Essayez de rendre l'élément SVG plus grand que le div, et laissez le div gérer le débordement à l'aide de scroll.
Par exemple, voyez ceci jsfiddle , qui utilise le CSS suivant:
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;
}
Une partie de l'intérêt de SVG est de pouvoir évoluer pour s'adapter à l'écran. Cependant, je pense que si vous voulez obtenir quelque chose comme ce que vous décrivez, vous devez définir explicitement width
et height
sur l'élément svg
. Quelque chose comme http://jsfiddle.net/qTFxJ/13/ où j'ai défini les width
et height
en pixels pour correspondre à votre taille viewBox
.