私は自分のページにテーブルを持っています。colgroupsを使用してこの列のすべてのセルを同じ方法でフォーマットし、背景色などすべてに適しています。しかし、テキスト揃えセンターが機能しない理由を理解することはできません。テキストを中央に揃えません。
例:
<table id="myTable" cellspacing="5">
<colgroup id="names"></colgroup>
<colgroup id="col20" class="datacol"></colgroup>
<colgroup id="col19" class="datacol"></colgroup>
<colgroup id="col18" class="datacol"></colgroup>
<thead>
<th> </th>
<th>20</th>
<th>19</th>
<th>18</th>
</thead>
<tbody>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
CSS:
#names {
width: 200px;
}
#myTable .datacol {
text-align: center;
background-color: red;
}
のみ CSSプロパティの限定セットが列に適用されます 、およびtext-align
はそれらの1つではありません。
"テーブル列に4つのプロパティだけが適用される理由の謎" を参照してください。
簡単な例では、これらを修正する最も簡単な方法は次のルールを追加することです。
#myTable tbody td { text-align: center }
#myTable tbody td:first-child { text-align: left }
これにより、最初の列を除くすべてのテーブルセルが中央に配置されます。これはIE6では機能しませんが、IE6ではtext-align
doesは実際に(間違って)列を処理します。 IE6がすべてのプロパティをサポートしているか、それともより大きなサブセットだけをサポートしているかはわかりません。
ああ、あなたのHTMLは無効です。 <thead>
が抜ける<tr>
。
次のCSSを使用すると、1つ以上のクラスをテーブル要素に追加するだけで、それに応じて列を揃えることができます。
CSS
.col1-right td:nth-child(1) {text-align: right}
.col2-right td:nth-child(2) {text-align: right}
.col3-right td:nth-child(3) {text-align: right}
HTML
<table class="col2-right col3-right">
<tr>
<td>Column 1 will be left</td>
<td>Column 2 will be right</td>
<td>Column 2 will be right</td>
</tr>
</table>
2018年2月現在、他の回答に記載されている制限に加えて、ChromeおよびChromiumベースのブラウザのcolgroupsでは、バグのため、visibility:collapseはまだ機能しません。「 CSS col visibility:collapseはChromeでは機能しません "。現在使用可能なプロパティは、ボーダー、背景、幅だけです(Chromeと他のChromiumベースのブラウザ)。 https://crbug.com/174167 でバグを追跡できます。