2012-03-11 9 views
5

tôi có thể là người đầu tiên khám phá này (tài liệu hay ít nhất nó trên web):Đây có phải là giải pháp đơn giản và linh hoạt nhất để sắp xếp văn bản theo chiều dọc trong một phần tử khối không?

HTML:

<div>Vertically Aligned Text<span></span></div> 

CSS:

div 
{ 
    height: 100px; /* or whatever % etc. */ 
} 

div > span 
{ 
    display: inline-block; 
    visibility: hidden; 
    height: 100%; 
    vertical-align: middle; 
} 

Nó hoạt động vì mã tăng chiều cao dòng tới 100% vùng chứa của nó, nhưng tôi không hiểu tại sao thiết lập vertical-align: middle; trên <span></span> ảnh hưởng đến văn bản.

Tôi chưa tìm thấy giải pháp này được ghi trên web và giải pháp này đơn giản và linh hoạt hơn những thứ khác mà tôi đã tìm thấy. Plus nó sẽ làm việc trên tất cả các trình duyệt từ IE6 trở đi (rõ ràng là thay thế bộ chọn con với cái gì khác).

Để phù hợp với yêu cầu câu hỏi, đây có phải là giải pháp đơn giản và linh hoạt nhất cho câu hỏi cũ?

+0

Đặt liên kết fiddlink. –

+0

Đẹp nhưng chỉ hoạt động nếu văn bản không borken trên nhiều hơn một dòng http://jsfiddle.net/aQNWp/ – Dampsquid

+0

fiddlink là gì? –

Trả lời

0

Tôi tìm thấy bằng cách sử dụng thuộc tính hiển thị CSS table-cell phương pháp dễ nhất.

Xem này jsFiddle

Và CSS:

div 
{ 
    height:100px; /* or whatever % etc. */ 
    border: solid 1px black; 
    vertical-align : middle; 
    display : table-cell; 
} 
+0

Tôi không nghĩ rằng nó hoạt động trên IE6/7. –

+0

@ChrisCannon Đúng, [phương pháp hiển thị bảng không được hỗ trợ trong ie6/7] (http://www.quirksmode.org/css/display.html) – steveax

+0

Tôi không còn hỗ trợ chúng nữa. Tôi chuyển hướng IE6/7 đến một trang nói xin vui lòng cập nhật anyway. Nếu họ vẫn đang sử dụng chúng, họ sẽ không nhìn thấy các trang web hiện đại xinh đẹp của tôi: P – jacktheripper

0

Bài viết này mô tả tất cả các kỹ thuật xếp thẳng dọc (mà tôi biết tắt :)), inclusing cách tiếp cận bạn mất. http://phrogz.net/css/vertical-align/index.html

+0

Không, phương pháp 1 sử dụng lề âm và phương pháp 2 sử dụng chiều cao dòng dựa trên ems (điều này không sao nếu có tỷ lệ đơn giản như 2: 1). –