CSS tablo modeli, http://www.w3.org/TR/CSS21/tables.html HTML tablo modeline dayanmaktadır.
Bir tablo SATIRLAR'a bölünür ve her satır bir veya daha fazla hücre içerir. Hücreler ROWS'un çocuklarıdır, ASLA sütunların çocukları değildir.
"display: table-column" sütunlu düzenler yapmak için bir mekanizma SAĞLAMAZ (örneğin, içeriğin bir sütundan diğerine akabildiği birden çok sütuna sahip gazete sayfaları).
Bunun yerine, "tablo-sütun" YALNIZCA bir tablonun satırları içindeki karşılık gelen hücrelere uygulanan öznitelikleri belirler. Örneğin, "Her satırdaki ilk hücrenin arka plan rengi yeşil" olarak tanımlanabilir.
Tablonun kendisi her zaman HTML'deki ile aynı şekilde yapılandırılmıştır.
HTML'de ("td" ler "tr" ler içinde, "sütun" lar içinde DEĞİLDİR):
<table ..>
<col .. />
<col .. />
<tr ..>
<td ..></td>
<td ..></td>
</tr>
<tr ..>
<td ..></td>
<td ..></td>
</tr>
</table>
CSS tablo özelliklerini kullanarak karşılık gelen HTML ("sütun" div'lerinin herhangi bir içerik içermediğine dikkat edin - standart, doğrudan sütunlardaki içeriğe izin vermez):
.mytable {
display: table;
}
.myrow {
display: table-row;
}
.mycell {
display: table-cell;
}
.column1 {
display: table-column;
background-color: green;
}
.column2 {
display: table-column;
}
<div class="mytable">
<div class="column1"></div>
<div class="column2"></div>
<div class="myrow">
<div class="mycell">contents of first cell in row 1</div>
<div class="mycell">contents of second cell in row 1</div>
</div>
<div class="myrow">
<div class="mycell">contents of first cell in row 2</div>
<div class="mycell">contents of second cell in row 2</div>
</div>
</div>
İSTEĞE BAĞLI : hem "satırlar" hem de "sütunlar", her satıra ve hücreye aşağıdaki gibi birden çok sınıf atanarak şekillendirilebilir. Bu yaklaşım, stil uygulanacak çeşitli hücre kümelerini veya tek tek hücreleri belirlemede maksimum esneklik sağlar:
//Useful css declarations, depending on what you want to affect, include:
.mycell {
}
.row1 {
}
.row1 .mycell {
}
.row1 .cell1 {
}
.cell1 {
}
.mytable .row1 {
}
.mytable .row1 .mycell {
}
.mytable .row1 .cell1 {
}
.mytable .cell1 {
}
<div class="mytable">
<div class="column1"></div>
<div class="column2"></div>
<div class="myrow row1">
<div class="mycell cell1">contents of first cell in row 1</div>
<div class="mycell cell2">contents of second cell in row 1</div>
</div>
<div class="myrow row2">
<div class="mycell cell1">contents of first cell in row 2</div>
<div class="mycell cell2">contents of second cell in row 2</div>
</div>
</div>
Kullanmak bugünün esnek tasarımlar, içinde <div>
farklı amaçlar için, bu koymak için akıllıca olacaktır bazı başvurmak yardımına, her div class. Burada eskiden <tr>
HTML'de olan şey oldu class myrow
ve <td>
oldu class mycell
. Bu kural, yukarıdaki CSS seçicilerini yararlı kılan şeydir.
PERFORMANS NOTU : Her hücreye sınıf adları koymak ve yukarıdaki çok sınıflı seçicileri kullanmak *
, .row1 *
veya hatta ile biten seçicileri kullanmaktan daha iyi performans gösterir .row1 > *
. Bunun nedeni, seçicilerin en son eşleştirilmesidir , bu nedenle eşleşen öğeler aranırken .row1 *
önce tüm öğelerle *
eşleşir ve ardından herhangi bir atanın sahip olup olmadığını bulmak için her öğenin tüm atalarını kontrol eder . Bu, yavaş bir aygıtta karmaşık bir belgede yavaş olabilir. daha iyidir, çünkü yalnızca yakın ebeveyn incelenir. Ancak, çoğu öğeyi aracılığıyla hemen ortadan kaldırmak çok daha iyidir . (class row1
.row1 > *
.row1 .cell1
.row1 > .cell1
eden daha sıkı bir özelliktir, ancak bu aramanın ilk adımıdır. bu en büyük farkı yaratır, bu nedenle genellikle karmaşaya değmez ve her zaman doğrudan bir çocuk olup olmayacağına dair ekstra düşünme sürecine çocuk seçiciyi>
.)
Yeniden götürmek önemli nokta performansı olmasıdır geçen bir seçici içindeki madde olmalıdır mümkün olduğunca kesin ve olmamalıdır *
.