HTMLのチェックボックス要素(input[type="checkbox"])で表示される□は、閲覧環境によっては小さく表示されてしまい、チェックを入れたり外したりしにくい場合がある。
その場合の対処法として、
- チェックボックスそのものをCSSで拡大する(参考:チェックボックスやラジオボタンを大きくする方法: 小粋空間、チェックボックスを大きくしたい - Qiita)
- LABEL 要素を用いて、有効な範囲を拡大する
- チェックボックスの代替として、画像+JavaScript 等でなんとかする
といった方法があると思われる。
で、2. の手法でやろうとしたのだが、条件を
- チェックボックスを、TABLE 内の TD 要素下に置く
- TD の高さや横幅は不定
- TD 内部全体を有効範囲としたい
- チェックボックスそのものは、TD要素の上下左右中央に表示
のように定めたところ、どうやって CSS を書けばよいのかわからなくて、悩んでしまった。
<td>
— 風柳 (@furyutei) April 7, 2016
<label>
<input type="checkbox" />
</label>
</td>
のような構造で、TDの高さ不定のとき、
・LABELをTDの内側いっぱいにする
・checkboxをLABELの上下左右中央寄せ表示
するにはCSSどう書けばいい?
目的は、画像のような感じで、TDの内側いっぱいに広がった緑の領域(LABEL)をクリックすることで、チェックボックスをON/OFFできるようにしたいのだが。 pic.twitter.com/ksPpMNu9V5
— 風柳 (@furyutei) April 7, 2016
ちなみに、先の画像のHTMLソース。
— 風柳 (@furyutei) April 7, 2016
…もっとシンプルに書ける気がするんだけれども…ううっ、CSSって難しいなぁ…。 pic.twitter.com/hK7SkuE1Z6
td { position: relative; } label { display: block; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: lime; } input[type="checkbox"] { display: block; /* 無くてもよい模様 */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; }
どうにも、冗長な書き方をしている気がしてならない。
もっとシンプルな記述方法を知りたい……ご存知の方はご教示いただきたい。