C'è un problema noto con IE 9/10/11 in cui, se si dispone di un file SVG in cui l'elemento <svg>
specifica una larghezza e altezza, e quindi si scala l'immagine SVG utilizzando gli attributi width
e height
di un tag <img>
, IE non ridimensiona correttamente l'immagine.SVG con larghezza/altezza non scala su IE9/10/11
Ho incontrato questo problema. Ho una serie di icone di flag SVG. Per l'icona della bandiera degli Stati Uniti, l'oggetto SVG è scritto come:
<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.
inserisco lo SVG in un documento HTML con un tag <img>
, e giù scala a 20x15:
Su Chrome 39, lo SVG è reso correttamente in questo modo:
Ma su IE10, rende come segue:
Allora, che cosa sembra accadere qui è che, anche se IE10 dimensioni dell'elemento <img>
a 20x15, non il downscaling della SVG - così finiamo per vedere solo l'angolo in alto a sinistra dell'icona della bandiera, che appare come una semplice scatola blu.
Okay ... questo sembra essere un problema noto con documented solutions. Una soluzione è semplicemente rimuovere tutti gli attributi width
e height
nel file SVG. Questo sembra un po 'pericoloso in quanto non voglio rovinare i progetti attuali. È anche un po 'complicato da fare se si hanno molti file SVG, che richiedono più script per elaborare i file.
Una soluzione più bello è quello di utilizzare i CSS per indirizzare specificamente gli elementi SVG in IE10, che apparentemente è possibile utilizzando una specifica media query fornitore:
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
img[src*=".svg"] {
width: 100%;
}
}
Va bene, ma io non capisco questa soluzione. Quando provo quanto sopra, IE10 semplicemente espande la dimensione del SVG per riempire l'intero contenitore genitore, che non è quello che voglio. Ok, forse posso forzare IE a scalare l'SVG impostando la larghezza SVG al 100%, ma poi vincolando la dimensione del contenitore genitore. Così ho avvolto lo <img>
in un DIV con una larghezza e un'altezza di 20x15. Ma ... questo ha provocato lo stesso problema di prima: il contenitore DIV è fissato a 20x15, ma SVG non si restringe, quindi tutto ciò che finiamo è l'angolo blu in alto a sinistra della bandiera come prima:
... così, sono probabilmente solo non capire qualcosa su questa soluzione. Come posso ottenere IE10/11 per ridimensionare l'icona della bandiera su 20x15?
Grazie - ha risolto anche il mio problema :) – MWD
C'è un buon articolo [qui] (https://css-tricks.com/scale-svg/) su di esso, copre entrambe le tecniche menzionate qui ma quella di Josiah dovrebbe lavoro – Simon