2013-07-14 2 views
34

Attualmente sto usando FontAwesome e sto avendo un momento difficile centrando le icone sia verticalmente che orizzontalmente nel loro contenitore. Ho provato a farlo tramite il posizionamento e ho riscontrato problemi in cui le dimensioni delle icone erano diverse. Fondamentalmente ho l'orizzontale e sto cercando di ottenere la verticale.Centratura font Icone grandiose verticalmente e orizzontalmente

<div class='container'> 
    <div class='row'> 
     <div class='offset2 span6 loginContainer'> 
      <div class='row'> 
       <div class='login-icon'>  
        <i class='icon-user'></i> 
       </div> 
       <input type="text" placeholder="Email" /> 

      </div> 
      <div class='row'> 
       <div class='login-icon'><i class=" icon-lock "></i></div> 
       <input type="password" class="" placeholder="Password" /> 
      </div> 
     </div> 
    </div> 
</div> 

.login-icon{ 
    font-size: 40px; 
    line-height: 40px; 
    background-color:black; 
    color:white; 
    width: 50px; 
    height: 50px; 

} 
.login-icon [class*='icon-']{ 
    height: 50px; 
    width: 50px; 
    display: inline-block; 
    text-align: center; 
    vertical-align: baseline; 
} 

http://jsfiddle.net/ncapito/e2UPC/

risposta

36

questo i s tutto ciò che serve, senza involucro necessario:

.login-icon{ 
    display:inline-block; 
    font-size: 40px; 
    line-height: 50px; 
    background-color:black; 
    color:white; 
    width: 50px; 
    height: 50px; 
    text-align: center; 
    vertical-align: bottom; 
} 

http://jsfiddle.net/e2UPC/6/

+6

Hai hard coded 'line-height' questo non è dinamica. l'allineamento verticale non è usato qui. – Pierozi

6

Così ho finalmente capito (http://jsfiddle.net/ncapito/eYtU5/):

.centerWrapper:before { 
    content:''; 
    height: 100%; 
    display: inline-block; 
    vertical-align: middle; 
} 

.center { 
    display:inline-block; 
    vertical-align: middle; 
} 

<div class='row'> 
    <div class='login-icon'> 
     <div class='centerWrapper'> 
      <div class='center'> <i class='icon-user'></i></div> 
     </div> 
    </div> 
    <input type="text" placeholder="Email" /> 
</div> 
+0

Date un'occhiata alla mia risposta, credo che il tuo non sembrano così centrato –

1

Ho appena abbassato l'altezza 28px sul .login-icon [class = * 'icon-'] Ecco il violino: http://jsfiddle.net/mZHg7/

.login-icon [class*='icon-']{ 
    height: 28px; 
    width: 50px; 
    display: inline-block; 
    text-align: center; 
    vertical-align: baseline; 
} 
7

ho usato trasformare per correggere l'offset. Funziona alla grande con icone rotonde come l'anello della vita.

<span class="fa fa-life-ring"></span> 

.fa { 
    transform: translateY(-4%); 
} 
+3

Benvenuti in StackOverflow! Sebbene le risposte siano sempre apprezzate, questa domanda è stata posta 3 anni fa e aveva già una soluzione accettata. Si prega di cercare di evitare di "far saltare" le domande in alto fornendo risposte, a meno che la domanda non sia già stata contrassegnata come risolta o si sia trovato un approccio al problema drammaticamente migliore :) –

+5

La tua risposta ha aiutato molto, grazie – Infated

+2

@ ObsidianAge - se scambiare 11 righe di CSS per 3 non è una soluzione migliore (per un problema molto diffuso che molti di noi hanno regolarmente), non so cosa sia. – Jules

0

Se si utilizza Twitter Bootstrap, aggiungere il codice di classe al proprio codice.

<div class='login-icon'><i class="icon-lock text-center"></i></div>