Es gibt ein bekanntes Problem mit IE 9/10/11, wo, wenn Sie eine SVG-Datei haben, das <svg>
-Element eine Breite und Höhe angibt, und dann skalieren das SVG-Bild mit den Attributen width
und height
eines Tags IE nicht ordnungsgemäß skaliert das Bild.SVG mit Breite/Höhe skaliert nicht auf IE9/10/11
Ich bin auf dieses Problem gestoßen. Ich habe eine Reihe von SVG-Flaggen-Icons. Für das US-Flaggen-Symbol wird das SVG-Objekt geschrieben als:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="480" width="640">
<!-- elements to draw flag .. -->
</svg>
And here's the full source for the SVG.
ich die SVG in ein HTML-Dokument mit einem <img>
Tag einfügen und nach unten angelegten es zu 20x15:
Auf 39 Chrome wird der SVG gleichen Einschränkungen unterworfen wie so gemacht:
Aber auf IE10, macht es wie folgt:
So scheint, was hier der Fall zu sein, dass, obwohl IE10 das <img>
Element 20x15 Größen, ist es nicht die SVG nicht absteuernd - so Am Ende sehen wir nur die obere linke Ecke des Flaggensymbols, das als einfaches blaues Feld angezeigt wird.
Okay ... also scheint dies ein bekanntes Problem mit documented solutions zu sein. Eine Lösung besteht darin, einfach alle Attribute width
und height
in der SVG-Datei zu entfernen. Dies scheint ein bisschen gefährlich, da ich die tatsächlichen Designs nicht vermasseln möchte. Es ist auch ein bisschen umständlich zu tun, wenn Sie viele SVG-Dateien haben - erfordern mehr Skripte, um die Dateien zu verarbeiten.
Eine schönere Lösung ist CSS zu verwenden, um speziell SVG-Elemente in IE10 Ziel, die offenbar möglich ist, eine herstellerspezifische Medium Abfrage:
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
img[src*=".svg"] {
width: 100%;
}
}
Okay, aber ich verstehe nicht, diese Lösung. Wenn ich das obige versuche, erweitert IE10 einfach die Größe des SVG, um den gesamten übergeordneten Container zu füllen, was ich nicht möchte. Okay, vielleicht kann ich IE zwingen, das SVG zu skalieren, indem ich die SVG-Breite auf 100% setze, aber dann die Größe des übergeordneten Containers einschränke. Also habe ich die in einem DIV mit einer Breite und Höhe von 20x15 gewickelt. Aber ... das führte genau zu dem gleichen Problem wie zuvor: der Container-DIV ist auf 20x15 fixiert, aber der SVG schrumpft nicht - so dass wir nur noch die obere linke Ecke der Flagge sehen:
... so, ich bin wahrscheinlich einfach nicht etwas über diese Lösung zu verstehen. Wie kann ich IE10/11 dazu bringen, das Flaggensymbol auf 20x15 zu skalieren?
Danke - es hat mein Problem auch behoben :) – MWD
Es gibt einen guten Artikel [hier] (https://css-tricks.com/scale-svg/) darüber, es deckt beide hier genannten Techniken ab, aber die von Josiah sollte Arbeit – Simon