2012-05-09 44 views
17

Tôi muốn căn chỉnh theo chiều dọc một khoảng sau một hình ảnh nổi. Tôi đã tìm kiếm nó trong ngăn xếp tràn và tìm this post. nhưng hình ảnh của tôi được thả nổi.cách căn chỉnh văn bản theo chiều dọc bên cạnh hình ảnh nổi?

<div> 
    <img style="width:30px;height:30px; float:left"> 
    <span style="vertical-align:middle">Doesn't work.</span> 
</div> 

Tôi tặng vertical-align:middle cho hình ảnh và không có gì thay đổi!

Cảm ơn

+0

Vâng, có vẻ như thay đổi nếu bạn đặt 'thẳng đứng: trung bình' vào hình ảnh. Tôi đã thử nghiệm trên Chrome. – petrichor

+1

Bạn đã quên một ';' trong 'kiểu' cho' img' của bạn giữa 'height' và' float'. – Maehler

+0

@McFjodor Cảm ơn, tôi đã chỉnh sửa nó – Mosijava

Trả lời

9

Trước tiên, hãy xóa float khỏi nó. Viết như thế này:

<img style="width:30px;height:30px;vertical-align:middle" src="http://lorempixel.com/output/abstract-q-c-640-480-8.jpg"> 
    <span>Doesn't work.</span> 

Kiểm tra này http://jsfiddle.net/ws3Uf/

+1

Tôi sử dụng cách tiếp cận của bạn và tôi xóa phao khỏi hình ảnh của mình . Nhưng khi tôi thay đổi nội dung '' thành nội dung dài 2 dòng, dòng thứ hai đi đến cuối hình ảnh Cuối cùng, tôi thêm 'display: inline-block' vào' 'và nó hoạt động! Cảm ơn bạn – Mosijava

+0

@Mosijava - Sử dụng khối nội tuyến không hoạt động đối với tôi - nó chỉ đặt mọi thứ trên dòng tiếp theo. Bạn có một ví dụ về điều này làm việc? – Nick

+1

Điều này sẽ không có tác dụng tương tự như 'float' nếu văn bản đủ dài để cần nhiều dòng. http://jsfiddle.net/9667cqun/ –

1

Một <span> là một yếu tố nội tuyến, thử thêm display:block đến khoảng, cung cấp cho nó cùng một chiều cao như hình ảnh và chiều cao dòng để phù hợp. Float nó còn lại là tốt. Điều đó sẽ hoạt động

+0

Nó không hoạt động cho tôi – Mosijava

+0

thực sự ?, hãy xem http://jsbin.com/owiyuc/edit#html,live – atmd

1

Bạn có thể tự thay đổi cũng

<div> 
    <img style="width:30px;height:30px float:left"> 
    <span style="float:left;padding-top:15px;">Will work.</span> 
</div> 

Demo

Hoặc bạn có thể sử dụng một table

5

Thêm line-height (tương đương để hình dung chiều cao):

<div> 
    <img style="width:30px;height:30px; float:left"> 
    <span style="vertical-align:middle; line-height: 30px;">Works!</span> 
</div> 

See example.

+0

Điều gì sẽ xảy ra nếu nhịp có 2 dòng dài? – Mosijava

+1

@ Mosijava - giải pháp này chỉ hoạt động cho một dòng văn bản.Tôi vui mừng giải pháp của sandeep làm việc cho bạn (bạn rõ ràng là không cần 'float' trên hình ảnh như tiêu đề của bạn đề nghị). – ScottS

0

Bạn có thể làm như sau:

div:after { 
     content:""; 
     clear:both; 
     display:block; 
    } 
5

Mặc dù đây là một bài rất cũ, bạn có thể đạt được điều này bằng Flexbox:

div { 
 
display: flex; 
 
align-items: center; 
 
}
<div> 
 
<img style="width:30px;height:30px;" src="http://lorempixel.com/output/abstract-q-c-640-480-8.jpg" /> 
 
<span>Doesn't work.</span> 
 
</div>

JsFiddle example

Các vấn đề liên quan