9

以前、私はIE9でSVG画像が「トリミング」されていないことに関して「誰が間違っていたのか」という質問に答えましたoverflow: hidden。IE9では、他のすべてのサポートブラウザがそうしていました。答えはここにあります。

今日、HTML5ボイラープレートをもう一度確認していると、次のコードで「[正しい]オーバーフローがIE9に隠されていない」と主張していることに気付きました。

svg:not(:root) { overflow: hidden; }

HTML5またはSVG仕様のいずれかで他のメモを指摘することにより、元の調査を確認または拒否する人を探しています。何も見つかりませんが、何かが足りないことを確認したいと思います。

私が見つけることができる最善のことは、彼らがここimgでルール7を適用しようとしていることですが、それはタグを介して、または直接ロードされた場合など、SVGドキュメントにのみ適用されます。

4

2 に答える 2

4

SVG仕様には次のように書かれています:http ://www.w3.org/TR/SVG/styling.html#UAStyleSheet

FirefoxとChromeがしないことと似ているように見えますか?

于 2012-04-09T18:52:18.540 に答える
4

あなたが指定した根拠(具体的には仕様の5番目と7番目の箇条書き)を使用して、あなたの元の答えは私には聞こえます。

IE が正しく、Webkit と Firefox が正しくないということは、信じられないほどありそうにありません。ただし、ご想像のとおり、7 番目の箇条書き差別化要因です。

このテスト ケースを Chrome にロードし、開発者ツールを使用して SVG を調べると、次のように表示されます。

(user agent stylesheet)

svg:not(:root), symbol, image, marker, pattern, foreignObject {
  overflow: hidden;
}

Firebug で「Show User Agent CSS」を有効にすると、Firefox で次のルールが表示されます。

svg.css (line 49) <System>

svg:not(:root), symbol, image, marker, pattern, foreignObject {
  overflow: hidden;
} 

最後に、テスト ケースを編集して追加するとsvg { overflow:hidden }、IE は他のブラウザーと視覚的に一致します。

したがって、3 つのブラウザはすべて仕様どおりに動作しているように見えますが、Chrome/Safari/FF にはすべて、ほとんどのユーザーが期待するものにより近い UA ルールがあります。

十分に放っておくことができれば、ここでこの答えをやめます。

ただし、テスト ケースを編集して を追加するsvg { overflow:visible }と、Chrome と Firefox の両方でオーバーフローしたコンテンツが「正しく」表示されません。この回答の残りの部分でこのデータポイントを解決する方法がわかりません。:/

于 2012-04-09T18:18:07.633 に答える