2013-07-14 50 views
34

Tôi hiện đang sử dụng FontAwesome và có thời gian thực sự khó khăn trong việc căn giữa các biểu tượng theo chiều dọc và chiều ngang trong vùng chứa của chúng. Tôi đã thử làm điều đó thông qua định vị và chạy vào các vấn đề bc kích thước biểu tượng khác nhau. Tôi về cơ bản có ngang, và đang cố gắng để có được theo chiều dọc.Căn giữa các biểu tượng FontAwesome theo chiều dọc và chiều ngang

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

Trả lời

36

Điều này i s tất cả các bạn cần, không wrapper cần thiết:

.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

Bạn có dòng mã 'chiều cao 'cứng không được động. dọc-align không được sử dụng ở đây. – Pierozi

6

Vì vậy, cuối cùng tôi đã nhận nó (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

Hãy xem câu trả lời của tôi, tôi nghĩ rằng bạn không trông rất tập trung –

1

Tôi chỉ giảm chiều cao 28px trên .login-icon [lớp * = 'icon-'] Đây là fiddle: http://jsfiddle.net/mZHg7/

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

Tôi đã sử dụng chuyển đổi để khắc phục bù đắp. Nó hoạt động rất tốt với các biểu tượng tròn như vòng đời.

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

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

Chào mừng bạn đến với StackOverflow! Trong khi câu trả lời luôn được đánh giá cao, câu hỏi này đã được hỏi 3 năm trước, và đã có một giải pháp được chấp nhận. Vui lòng cố gắng tránh các câu hỏi 'chạm' lên đầu bằng cách cung cấp câu trả lời cho họ, trừ khi câu hỏi chưa được đánh dấu là đã giải quyết hoặc bạn đã tìm thấy cách tiếp cận thay thế tốt hơn đáng kể cho vấn đề :) –

+5

Câu trả lời của bạn đã giúp ích rất nhiều, thx – Infated

+2

@ ObsidianAge - nếu trao đổi 11 dòng CSS cho 3 không phải là một giải pháp tốt hơn (cho một vấn đề rất phổ biến mà nhiều người trong chúng ta thường xuyên có), tôi không biết là gì. – Jules

0

Nếu bạn đang sử dụng twitter Bootstrap thêm lớp văn bản vào giữa mã của bạn.

<div class='login-icon'><i class="icon-lock text-center"></i></div> 
Các vấn đề liên quan