2011-09-08 37 views
7

Có thể căn chỉnh 2 hàng sau như một bảng không? Hàng đầu tiên là h2 vì nó là tiêu đề và phần còn lại là danh sách. Cột đầu tiên phải khá rộng nhưng phần còn lại có thể rộng bằng văn bản bên trong. Các cột phải điền chiều rộng của div.Căn chỉnh như bảng nhưng với CSS?

<div> 
<h2 class="header1"> 
<span class="span1">one</span> 
<span class="span2">two</span> 
<span class="span3">three</span> 
<span class="span4">four</span> 
</h2> 
<ul><li> 
<span class="span5">five</span> 
<span class="span6">six</span> 
<span class="span7">seven</span> 
<span class="span8">eight</span> 
</li></ul> 
</div> 
div {width: 500px;} 
h2 span, li span {float: left; width: auto; white-space: nowrap;} 

Ví dụ:

Example

+0

Điều này có thể được thực hiện với CSS2 của 'display: table' và các quy tắc liên quan, được hỗ trợ bởi tất cả các trình duyệt trừ IE cho đến khi IE8. Nhưng tôi quan tâm đến lý do thực sự muốn làm điều này. – ThatMatthew

+0

@ThatMatthew 1.) Nhiều người (không may) vẫn sử dụng IE7 và các thuộc tính CSS2 này không được hỗ trợ. [w3schools] (http://www3.w3schools.com/cssref/pr_class_display.asp) 2.) Cách làm cũ của bảng không được W3C đề nghị vì khó trích xuất dữ liệu. [W3C] (http://www.w3.org/TR/html5/tabular-data.html) –

+0

Tôi chỉ muốn chắc chắn rằng bạn biết rằng các bảng _layout_ là những gì nên tránh. Nếu bạn có một bảng dữ liệu, bạn nên sử dụng thẻ 'table'. – ThatMatthew

Trả lời

11

HTML

<div class="table-like"> 
    <div> 
    <span>one</span> 
    <span>two</span> 
    <span>three</span> 
    <span>four</span> 
    </div> 
    <div> 
    <span>five</span> 
    <span>six</span> 
    <span>seven</span> 
    <span>eight</span> 
    </div> 
</div> 

CSS

.table-like { 
    display: table; 
    width: 500px; 
} 

.table-like div { 
    display: table-row; 
} 

.table-like div span { 
    display: table-cell; 
} 

/* add borders */ 
.table-like, 
.table-like div span { 
    border: 1px solid black; 
} 

/* bold on 1st row */ 
.table-like div:nth-child(1) { 
    font-weight: bold; 
} 

jsFiddle Demo

+0

Ok, nhưng hãy cẩn thận rằng IE7 không hỗ trợ phương pháp này. –

3

Thành thực mà nói, nếu bạn đang cố gắng để hiển thị dữ liệu dạng bảng, sử dụng một bảng. Không có gì sai với bảng, chỉ khi bạn đang sử dụng chúng để định vị nội dung không phải dạng bảng. Nếu bạn cần trợ giúp định dạng bảng, hãy chỉnh sửa câu hỏi của bạn.

+1

Đôi khi bạn cần căn chỉnh dạng bảng nhưng không sử dụng bảng do đánh dấu ngữ nghĩa. Vì vậy, tôi sẽ xóa câu trả lời này. – Marko

+2

Tôi sẽ không nhanh chóng nhảy đến kết luận đó. Nó không phải là không phổ biến cho người dân để đi đến độ dài lớn để tránh sử dụng đánh dấu bảng ít hơn không có lý do khác hơn là để khoe khoang một trang web ít bảng. – Wex

+0

@Marko Đúng vậy. Nó chỉ là một phần nhỏ của trang có định dạng giống như bảng, vì vậy tôi muốn tránh xa việc sử dụng các bảng. –

0

Cố gắng sử dụng display: inline-block:

h2{display: inline-block; margin:0 padding:0; min-width: 300px}/*use min-width what you want*/ 
ul, ul li{display: inline-block; margin:0; padding: 0;} 
Các vấn đề liên quan