2013-07-14 3 views
34

Obecnie używam FontAwesome i mam problem z centrowaniem ikon w pionie i poziomie w kontenerze. Próbowałem to zrobić poprzez pozycjonowanie i napotkałem problemy bc rozmiary ikon były różne. Zasadniczo mam poziomy i próbuję uzyskać pion.Centrowanie czcionekAutoryzowane ikony w pionie i poziomie

<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/

Odpowiedz

36

To ja wszystko, czego potrzebujesz, nie otoki potrzebne:

.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

Masz zakodowanego 'line-height' ten nie jest dynamiczny. vertical-align nie jest tutaj używane. – Pierozi

6

Więc w końcu go (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

Spójrz na moją odpowiedź, myślę, że twój nie wyglądają tak skoncentrowany –

1

Właśnie obniżono wysokość do 28px na .login-ikona [Klasa * = 'icon-'] Oto skrzypce: http://jsfiddle.net/mZHg7/

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

Użyłem przekształcić skorygować offset. Działa doskonale z okrągłymi ikonami, takimi jak pierścień życia.

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

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

Witamy w StackOverflow! Odpowiedzi są zawsze doceniane, pytanie to zadano 3 lata temu i już przyjęto rozwiązanie. Staraj się unikać "podskakiwania" pytań na górę, udzielając odpowiedzi na nie, chyba że pytanie nie zostało już oznaczone jako rozwiązane, lub znalazłeś znacznie lepsze alternatywne podejście do problemu :) –

+5

Twoja odpowiedź bardzo pomogła, thx – Infated

+2

@ ObsidianAge - jeśli wymieniamy 11 linii CSS na 3, to nie jest lepsze rozwiązanie (do bardzo powszechnego problemu, który wielu z nas ma regularnie), nie wiem co to jest. – Jules

0

Jeśli korzystasz z Twittera Bootstrap dodaj klasę text-center do swojego kodu.

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