
ソースは次項に書きます。現状での制約として
- CSS
3 のtransform 属性が「実験段階」で、未対応ブラウザ等の問題がある - 斜線を引くセルの横幅・高さは絶対値で固定。そこから値を計算して
CSS に書く - ブラウザによっては線の位置が少しずれたり、ギザギザになる
transform
ソースと実際の例
ブラウザが対応していれば、下のテーブルの左上隅セルに、右上がりの対角線が引かれてると思います。ソースとして、スタイルシートとcolumn1 | column2 | |
row1 | a | b |
row2 | c | d |
column1 | column2 | |
row1 | a | b |
row2 | c | d |
原理は次のとおりです。
- 斜線を引くセル内に、空の
DIV 要素を挿入 - DIV
要素のサイズをセルいっぱいに広げる(height: 100%; width: 100%;) - DIV
要素の上側だけに線を付ける(border-top: solid gray 1px;) - transform
属性で DIV 要素を縦方向に斜めに変形(スキュー、またはシアー、せん断とも)+移動。DIV上側の線がセルの対角線になるよう、matrix パラメータを入力。セル中央が原点なので、セル縦サイズの半分を縦方向の移動量にする(明日、少し補足します)
その他の例
先ほどの右上がり斜線に対し、右下がりの場合。matrixcolumn1 | column2 | |
row1 | a | b |
row2 | c | d |
column1 | column2 | |
row1 | a | b |
row2 | c | d |
↓ 右上がり・右下がり両方の斜線をクロスさせる場合。ちょっと面倒で、斜線の実体である
column1 | column2 | |
row1 | a | b |
row2 | c | d |
column1 | column2 | |
row1 | a | b |
row2 | c | d |
↓ 何の役に立つか分かりませんが三角に塗る例。これは簡単で、斜線の実体である
column1 | column2 | |
row1 | a | b |
row2 | c | d |
column1 | column2 | |
row1 | a | b |
row2 | c | d |
明日は、補足として