バーのあるテーブルがあります。display: table-cell
内容を一番下に揃えるために使用します。問題は、コンテナdiv
が対応するsに対して水平に整列しなくなったことTH
です(幅が設定されていません)
2 に答える
問題
-attributeを使用する場合の問題table-cell
は、「実際のテーブルセル」のように動作し、block
-またはinline
-elementのようには動作しないことです。親要素table-row
とtable
が欠落している場合、それらは匿名で生成されます。したがって、ボックスはのようなすべてのものを失いますmargin
。
これについて詳しくは、 「ビジュアルフォーマットモデルのテーブル」をご覧ください。
HTML構造を少し再構築しましたが、これは正常に機能しているようです。
デモ
http://jsfiddle.net/insertusernamehere/XPSQG/
CSS
<style>
#graph th {
background: red;
}
#graph td {
min-width: 30px;
margin: 0;
padding: 0;
color: #222222;
}
#graph div {
display: block;
position: relative;
margin: 0 auto;
width: 30px;
max-width: 30px;
height: 100px;
background-color: #EFEFEF;
border: 1px solid #000000;
}
#graph span {
position: absolute;
left: 0;
top: -20px;
width: 100%;
color: #222222;
font-size: 16px;
line-height: 16px;
text-align: center;
}
#graph p.color {
position: absolute;
right: 0;
bottom: 0px;
width: 100%;
margin: 0;
color: #222222;
}
#graph p.color.c1 {
background: #0f0;
}
#graph p.color.c2 {
background: blue;
}
</style>
HTMl
<div id="graph">
<table>
<tr>
<td><div><p class="color c1" style="height:20px;"><span>1</span></p></div></td>
<td><div><p class="color c2" style="height:30%;"><span>2</span></p></div></td>
<td><div><p class="color c1" style="height:40%;"><span>3</span></p></div></td>
<td><div><p class="color c2" style="height:50%;"><span>4</span></p></div></td>
</tr>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>Some long value</th>
</tr>
</table>
</div>
使い方
<p>
基本的に、列の内容(緑色のパーセンテージタグ)を下部に配置します。その上に番号を付けるには、-タグ内に簡単に配置して、<p>
再び「移動」することができます。これはこの部分によって行われます:
top: -20px;
font-size: 16px;
line-height: 16px;
これは、行の高さとフォントサイズが16pxであることを示しています。それを完全に移動するように設定top: -16px
するだけで十分です-追加の4pxは素晴らしいパディングを追加します。:)
あなたがアイデアを得ることを願っています。
ノート
この属性を使用した場所:
countunit="0_1_0"
これは有効なHTMLではないため、data
-prefixを使用してください。
data-countunit="0_1_0"
これは有効なHTML5であり、古いブラウザでも問題は発生しません。
別の要素の内側にあるテーブルセルという表示を使用して、要素を水平方向に中央揃えにするトリックがあります。
周囲の要素にクラス.table-wrapperがあり、内側の要素に.table-cellがあるとします。次のCSSを使用します。
.table-wrapper {
display: table;
width: 100%;
text-align: center;
}
.table-cell {
vertical-align: middle;
}
このようにして、テキストまたは必要なものを.table-cell内で垂直方向および水平方向に中央揃えにします。