2011-06-30 15 views
5

以下のコードを使用して、HTML5にSVGを埋め込みました。今私が解決できない唯一の問題は、HTMLファイルをブラウザで表示したときに<svg><td>の間に多くのスペースがあることです。誰かがそのスペースを取り除く方法を教えてもらえますか?HTML5の<svg>と​​の間のスペースを削除するにはどうすればよいですか?

ありがとうございます!

詳細:

申し訳ありませんが、私が使用しているブラウザと言うのを忘れていました。私はIE9を使用すると、SVGと左右のバーの間に多くのスペースがあることがわかります。ただし、Chromeを使用すると、SVGと上部バーと下部バーの間に大きなスペースがあります。それはかなり奇妙です。

以下のコードを編集します。私は追加する svg {margin-top:0px; margin-bottom:0px; margin-right:0px; 余白 - 左:0px;背景 - 色:黄色;}

コードです。私がしたいのは、黄色のスペースを削除することです。今質問はより具体的になります。


<!DOCTYPE html><html> 
<head> 

<title>SarShips: scs</title> 
<style type="text/css"> 

table 
{ 
border-collapse:collapse; 
} 
table, td, th 
{ 
border:1px solid black; 
} 

table {margin-left:auto;margin-right:auto} 
tr.odd {background-color:#E0E0F0} 
tr.even {background-color:#F0F0FF} 
th {font:22px sans-serif;background-color:#98AFC7;color:white;padding:6px} 
td.e {font:bold 15px serif;text-align:right;padding:4px} 
td.v {font:15px monospace;text-align:left;padding:4px} 
td.i {padding:4px} 
p {text-align:center} 
     svg {margin-top:0px; 
      margin-bottom:0px; 
      margin-right:0px; 
      margin-left:0px;background-color:yellow;} 
</style> 
</head> 
<body> 
<table> 
<thead> 
<tr> 
<th>Parameters</th><th>Imagette</th><th>Profile</th><th>Remarks</th> 
</tr> 
</thead> 
<tbody> 
<tr> 
<td> 

</td><td class="i"></td> 

<td class="i"> 
<svg width="100%" height="100%" viewBox="0 0 400 400" > 
<g> 
<rect width="400" height="400" style="stroke-width:1;   stroke:rgb(0,0,0)"></rect> 
<circle cx="200" cy="200" r="200" stroke="green" stroke-width="2"></circle> 
<circle cx="200" cy="200" r="160" stroke="green" stroke-width="2"></circle> 
<circle cx="200" cy="200" r="120" stroke="green" stroke-width="2"></circle> 
<circle cx="200" cy="200" r="80" stroke="green" stroke-width="2"></circle> 
<circle cx="200" cy="200" r="40" stroke="green" stroke-width="2"></circle> 
<path d="M250 150 L150 350 L350 350 Z" style="fill:rgb(0,0,255);stroke-width:1;   stroke:rgb(0,0,0)"></path> 
<path d="M200,200 L200,0 A200 200 0 0 1 200 400 Z" style="fill:green;stroke:green;stroke-width:5;   fill-opacity:0.5;stroke-opacity:0.9"></path> 
<path d="M150 250 S150 150 170 170 L220 150Z" style="fill:pink;stroke:blue;stroke-width:1;   fill-opacity:0.9;stroke-opacity:0.9"></path> 
</g> 
</svg> 
</td><td></td> 
</tr> 

</tbody> 
</table> 
</body> 
</html> 
+0

どのくらいのスペース? 4px、 'td.i'に設定したパディングのようですか? –

+0

使用するブラウザを指定しても問題ありません。他のブラウザでHTMLとSVGを混在させることはまだできていないと私は思うが、それはFirefoxだと思う。 –

+0

http://jsfiddle.net/BJgRT/で再生するjsFiddle –

答えて

23

SVGをインラインとテーブルセルの内側にあるので、SVGからパーセンテージを計算するために知っているように<td>svgと幅/高さにdisplay:blockを追加してみてください... Chromeで動作しません。

+0

こんにちはSpadar、私はあなたの方法を試して、黄色の領域が小さくなります。どうもありがとうございました。 – user811416

+0

ようこそ。これにより、このコメントに許容される解決策としてマークすることができました;) –

+0

Sapdar。私の評判は十分ではないので、私は投票できません。 – user811416

1

私はそれ以外の場合は、あなたが望んでいただけ4pxあるので、あなたがSVG画像の下の空間を意味することを想定しています。下のスペースは、画像に加えて表のセルに含まれる空白に由来します。あなたは簡単にテキストの高さを変えることによって、これを "修正" することができます

td.i {padding:4px;line-height:0px;} 
+0

こんにちはPalant、私はあなたのコードをChromeで試してみますが、うまくいきません。理由は、html5では "line-height"がサポートされていない可能性があると思います。 – user811416

+1

@ user811416:いいえ、それはあなたのSVGイメージの 'width' /' height'を '100%'に設定したからです - 実際には何ですか? SVGイメージに固定サイズを設定した場合、またはそれを含むテーブルセルのサイズを定義した場合、すべてが正しく動作します。 Btw、あなたが質問に答えるのを始めたら傷つけません - 私はあなたが使っているブラウザとあなたが意味する問題を推測するのが好きではありません。 –

+0

@ user811416 'svg'をブロックレベルの要素にすることで修正することもできます。また、Wladimirは正解です - テーブルの定義機能の1つは、コンテンツを含むように自動的に展開することです。イメージのサイズを '100% 'にするには、イメージのための明確なサイズのコンテナが必要です'100%'が何かを意味するために入る。 – robertc

2

私は

SVG {マージントップに変更:0PXを。
margin-bottom:0px;
margin-right:0px;
マージン左:0PX;背景色:黄色;}

SVG {マージントップすべき:0PX。
margin-bottom:0px;
margin-right:-150px;
マージン左:0PX;背景色:黄色;}

そして黄色空間はIE9で消えます。このソリューションは、

1

これは、WebkitのデフォルトのSVGサイズが350pxで150pxの場合に問題となります。

これはまだ、おそらくそれについての私のお気に入りの記事です:http://henkelmann.eu/2010/12/16/display_svg_image_same_size_in_decent_browsers

だから、問題はあなたのSVGのための剛性のピクセルサイズを設定するか、またはあなたのコンテナの剛性の大きさを設定するか必要があるということです。私は動的スケーリングを可能にする方法を見つけていません(あなたがjavascriptでそれをしない限り、解答はここのコメントにあります:How do I scale a stubborn SVG embedded with the <object> tag?)。

関連する問題