2011-12-01 39 views
22

私は内部に多くの要素を持つSVG要素を持っています。 SVG要素にはビューボックスがあるので、ズームボタンを押すと要素が大きくなったり小さくなったりします。うまくいく。ここで問題は、要素が親SVG要素をオーバーフローしたときにスクロールバーが表示されないことです。SVGでスクロールバーを取得するには?

例:

<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タグに入れます。動作しません。

+1

私は数日前にこのページに終わった方法を知っているが、見てはいけない:ます:http://www.carto

たとえば、次のCSSを利用して、このjsfiddle、参照.net/svg/gui/scrollbar /助けの可能性があります – jValdron

+0

私はこの例を知っていますが、html/cssのデフォルトスクロールバーではなく、svg/jsで独自のスクロールバーを作成します。 – snapple

答えて

4

SVGのポイントの一部は、画面に合わせて拡大縮小できるようになっています。しかし、あなたが何を記述しているのかを知りたければ、とheightsvg要素に明示的に設定する必要があります。何かhttp://jsfiddle.net/qTFxJ/13/のようにviewBoxのサイズに合わせてピクセル数をwidthheightに設定します。

+0

ありがとうございます。私はコードを更新しましたが、今は良く見えません。コードはhttp://jsfiddle.net/qTFxJ/17/です。 – snapple

+0

あなたが良くないことが何を意味するか分かりません。私はあなたが望んでいたスクロールバーを見ます。私はあなたの最終的な "見た目"がどんなものかとは知らない。あなたの例では、svg要素の幅/高さが、私のようにviewBoxと同じ数値に設定されていないことに気付きました。それがあなたの期待どおりに見えないのかどうかわかりません。 – ScottS

+0

さて、もう一度私の問題を説明しようとしています。 例:http://jsfiddle.net/qTFxJ/18/ 固定幅と高さ(400px)のsvg要素があります。また、svg要素内の要素を大きくまたは小さくするためのビューボックスも用意されています。この例では、rect/width/heightは400px、x/y座標は40pxです。さて、あなたはrectを完全に見ることができません。今は、rectを完全に見るためにsvg要素のスクロールバーを取得したいと思います。 – snapple

28

SVG要素をdivより大きくし、divがスクロールを使用してオーバーフローを処理するようにしてください。

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; 
} 
+0

親愛なるAkhileshさん、こちらの回答の必須部分を含め、参照用のリンクを提供することが望ましいです(http://meta.stackexchange.com/q/8259)。 – osyan

+0

@Akhileshあなたは私の一日を作った!驚くばかり –

関連する問題