2011-12-26 11 views
153

Ho un file SVG che sto cercando di centrare in un div. Il div ha una larghezza o 900px. SVG ha una larghezza di 400 px. SVG ha il margine sinistro e il margine destro impostati su automatico. Non funziona, funziona come se il margine sinistro fosse 0 (predefinito).Come si centra un SVG in un div?

Qualcuno conosce il mio errore?

risposta

275

SVG è in linea per impostazione predefinita. Aggiungi display: block a esso e quindi margin: auto funzionerà come previsto.

+4

abbastanza sicuro che questo significa anche che text-align: center sull'elemento genitore funzionerà troppo (che funziona per me in Chrome comunque) – Nathan

2

assicurarsi che il CSS si legge:

margin: 0 auto; 

Anche se si sta dicendo di avere il set di sinistra e destra per auto, potrebbe essere mettendo un errore. Ovviamente non lo sapremmo perché non ci hai mostrato alcun codice.

20

Sopra le risposte non ha funzionato per me. Aggiungere l'attributo preserveAspectRatio="xMidYMin" al tag <svg> ha funzionato. L'attributo viewBox deve essere specificato affinché funzioni anche. Fonte: Mozilla developer network

13

Nessuna di queste risposte ha funzionato per me. Questo è come l'ho fatto.

position: relative; 
left: 50%; 
-webkit-transform: translateX(-50%); 
-ms-transform: translateX(-50%); 
transform: translateX(-50%); 
+2

non so perché, ma ho dovuto usare 'left: 100%' –

11

Avendo letto sopra che svg è in linea per impostazione predefinita, ho solo aggiunto quanto segue al div:

<div style="text-align:center;"> 

e lo ha fatto il trucco per me.

I puristi potrebbero non piacere (è un'immagine, non un testo) ma secondo me HTML e CSS sono incasinati e centrati, quindi penso che sia giustificato.

1

ho dovuto usare

display: inline-block; 
8

risposte di cui sopra sguardo incompleta come stanno parlando dal punto css di sola visualizzazione.

posizionamento SVG all'interno finestra è influenzato da due svg attributi

  1. viewBox: definisce l'area rettangolare per SVG per coprire.
  2. preserveAspectRatio: definito il punto in cui posizionare viewBox in vista e come estenderlo se la vista cambia.

Follow this link from codepen for detailed description

<svg viewBox="70 160 800 190" preserveAspectRatio="xMaxYMax meet"> 
+0

questo è tutto. ha funzionato perfettamente per me – warunanc

1

Si può anche fare questo:

<center> 
<div style="width: 40px; height: 40px;"> 
    <svg class="sqs-svg-icon--social" viewBox="0 0 64 64"> 
     <use class="sqs-use--icon" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#twitter-icon"> 
      <svg id="twitter-icon" viewBox="0 0 64 64" width="100%" height="100%"> 
       <path 
        d="M48,22.1c-1.2,0.5-2.4,0.9-3.8,1c1.4-0.8,2.4-2.1,2.9-3.6c-1.3,0.8-2.7,1.3-4.2,1.6 C41.7,19.8,40,19,38.2,19c-3.6,0-6.6,2.9-6.6,6.6c0,0.5,0.1,1,0.2,1.5c-5.5-0.3-10.3-2.9-13.5-6.9c-0.6,1-0.9,2.1-0.9,3.3 c0,2.3,1.2,4.3,2.9,5.5c-1.1,0-2.1-0.3-3-0.8c0,0,0,0.1,0,0.1c0,3.2,2.3,5.8,5.3,6.4c-0.6,0.1-1.1,0.2-1.7,0.2c-0.4,0-0.8,0-1.2-0.1 c0.8,2.6,3.3,4.5,6.1,4.6c-2.2,1.8-5.1,2.8-8.2,2.8c-0.5,0-1.1,0-1.6-0.1c2.9,1.9,6.4,2.9,10.1,2.9c12.1,0,18.7-10,18.7-18.7 c0-0.3,0-0.6,0-0.8C46,24.5,47.1,23.4,48,22.1z" 
        /> 
      </svg> 
     </use> 
    </svg> 
</div> 
</center> 
+0

Grazie Martin, ha funzionato come un incantesimo! –

Problemi correlati