2014-12-29 13 views
5

Ho un file SVG del logo di un cliente che deve avere una combinazione di colori per l'intestazione (blu su bianco) e la sua inversa nel piè di pagina (bianco su blu). Per ridurre il carico, sto utilizzando un singolo elemento <svg> in linea con <symbol>, facendo riferimento in due punti utilizzando <svg><use xlink:href="#logo"/></svg> e quindi configurando ogni versione in modo appropriato tramite CSS.SVG collegato non antialias in IE11

Finora, tutto bene. Devo solo chiamare SVG una volta e posso modificarlo in modo diverso in entrambi i posti senza problemi.

Tuttavia, dopo aver controllato questa configurazione in IE11, ho visto che l'SVG collegato sembra terribile. Non sembra essere antialiasing, ma solo nella versione collegata.

Ho ridotto l'SVG a una versione semplificata per questo esempio (e per rendere anonimo il client), ma you can see this behavior in a fiddle se lo si visualizza in anteprima in IE11.

Ecco uno screenshot del comportamento in IE11. La versione a sinistra è il codice che desidero, ma è possibile vedere il degrado della qualità rispetto all'intero SVG in linea a destra.

Linked SVG in IE11 on left, inline SVG in IE11 on right

C'è qualche motivo per cui solo IE11 (IE9 e IE10 rendono questo correttamente) fa questo? Ho provato a inserire shape-rendering="geometricPrecision" e shape-rendering="optimizeQuality" in entrambi gli elementi <svg> e nell'elemento <path> e la qualità non cambia in IE11.

Cosa mi manca qui?

+0

La ragione è un bug presumibilmente. Potresti provare a segnalarlo a Microsoft. –

risposta

4

Sembra funzionare se si inserisce la sorgente nella parte superiore del codice.

Come così:

<svg style="display:none" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 90.44" xml:space="preserve" version="1.1"> 
<symbol id="logo"> 
    <defs> 
     <clipPath clipPathUnits="userSpaceOnUse"> 
      <path d="m0 67.83 432 0L432 0 0 0 0 67.83Z" /> 
     </clipPath> 
    </defs> 
    <g transform="matrix(1.3333333,0,0,-1.3333333,0,90.436933)"> 
     <g clip-path="url(#clipPath16)"> 
      <g transform="translate(25.9522,0.5186)"> 
       <path d="m0 0c-11.91 4.19-25.95 13.63-25.95 27.69l0 28 2.56 1.2c14.27 6.65 32.15 10.42 47.85 10.42l4.44 0 0-39.62C28.9 13.63 14.86 4.19 2.95 0L1.47-0.52 0 0ZM-21.51 52.86C-10.12 58.17 7.13 62.87 24.46 62.87l0-35.18C24.46 16.11 12.05 7.91 1.47 4.19-9.1 7.91-21.51 16.11-21.51 27.69l0 25.17z" style="fill-rule:evenodd;" /> 
      </g> 
      <g transform="translate(31.1309,54.8155)"> 
       <path d="M0 0C-0.02-0.01-0.05-0.02-0.07-0.03-0.05-0.02-0.02-0.01 0 0" class="s0" /> 
      </g> 
      <g transform="translate(31.2388,54.8624)"> 
       <path d="M0 0C-0.04-0.01-0.07-0.03-0.11-0.05-0.07-0.03-0.04-0.01 0 0" class="s0" /> 
      </g> 
      <g transform="translate(31.0625,54.7837)"> 
       <path d="M0 0C0 0 0 0-0.01 0 0 0 0 0 0 0" class="s0" /> 
      </g> 
     </g> 
    </g> 
</symbol> 
</svg> 

<header> 
<div> 
    <a href="test.html"><svg viewBox="0 0 576 90.44"> 
     <use xlink:href="#logo"/> 
    </svg></a> 
</div> 
<div> 
    <svg viewBox="0 0 576 90.44"> 
     <use xlink:href="#logo"/> 
    </svg> 
</div> 
</header> 

<div class="clear"><!-- --></div> 

<footer> 
    <div> 
    <a href="test.html"><svg viewBox="0 0 576 90.44"> 
     <use xlink:href="#logo"/> 
    </svg></a> 
</div> 
<div> 
    <svg viewBox="0 0 576 90.44"> 
     <use xlink:href="#logo"/> 
    </svg> 
</div> 
</footer> 
+0

Santo schifo. Sì, l'ha fatto. Così bizzarro, deve essere una specie di bug, ma questo risolve il mio problema adesso. Grazie mille! –

+0

Holy crap indeed :) Grazie anche a te, per aver sottolineato l'uso dei tag e il collegamento di SVG. Questo sarà utile per me, ne sono certo. – Rembunator

+0

Grazie mille, stavo cercando una soluzione per molto tempo !!! – aju