■cssでtable内にミニグラフ

PostgreSQL+PHPで実績表を作っていましたが数字だけだと分かりにくいです。
cssだけでTable内に簡単なミニグラフが表示出来る事が分かったのでやり方をまとめました

サンプル
商品前年今年
商品A100
80
商品B100
50
商品C100
100

商品前半中盤後半
商品A100100100
商品B
100
25
65

こんな感じでセル内に簡単なグラフが表示出来ます。
まずはcss

table{
  background-color: #FFFFFF;
  font-family: sans-serif;
  border-width: 1px;
  border-color: #808080;
  border-style: solid;
  border-collapse:collapse;
  margin: 0px;
  padding: 0px;
}
th{
  background-color: #eee;
  border-width: 1px;
  border-color: #808080;
  border-style: solid;
  margin: 0px;
  padding: 0px;
}
td{
  text-align:right;
  border-width: 1px;
  border-color: #808080;
  border-style: dotted solid ;
  width: 80px;
  margin: 0px;
  padding: 0px;
}
.box{
  position: relative;
}
.graph-w{
  position: absolute;
  z-index: 1;
  display: block;
  height: 100%;
  background-color: #CCFFFF;
}
.graph-h{
  position: absolute;
  z-index: 1;
  display: block;
  width: 100%;
  bottom:0; 
  background-color: #CCFFFF;
}
.graph-text{
  position: relative;
  z-index: 2;
  text-align:right;
}
boxはセルの左上を始点として指定できるように必要です。
graph-wは上のサンプルで横向きグラフ
graph-hは下のサンプルで縦向きグラフです。bottom:0と指定するのがポイントです
graph-textはテキストをグラフより前に表示する為必要です。

HTML※td内部のみ <td><div class='box'><div class='graph-w' style='width:50%;'></div><div class='graph-text'>50</div></div></td> <td><div class='box'><div class='graph-h' style='height:25%;'></div><div class='graph-text'>25</div></div></td> graph-wのwidthを%で指定する事によってグラフの長さを指定しています。
マイナスや100以上は指定出来ません。
graph-hの場合cssでbottom:0とやっているのでgraph-hが下詰めで表示されます。
上の例だと下詰めでセルの25%のボックスを表示するので縦のグラフのように見えます。

PHPで表を作る場合HTMLでwidth,heightを指定した方が良いと思います。
今回のサンプルでは色をcssファイルで指定しましたが%によって色を変える
場合はHTML側に書くと良いと思います。

ちょっと手を加えると見やすくなって良いですね

トップへ戻る