2014/04/01
[CSS] Checkboxes and Radio Buttons with CSS and Font Awesome Icons
チェックボックスやラジオボタンをCSSとwebフォント(FontAwesome)で実装する方法です。
ポイント
- デフォルトのチェックボックス、ラジオボタンを消す。
- 初期設定として隣接セレクタと疑似要素でlabelタグにアイコンを指定する。
- 選択状態でlabelタグのアイコンを入れ替える。
DEMO
アイコンの指定のみ
CSS + アイコン
apple 風
HTML
CSS
/* 共通 */ li { margin-bottom:1em; } label { position:relative; display: inline-block; line-height:1; cursor: pointer; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } label:before, label:after { position:relative; content: ""; display: inline-block; text-align:center; font-family: FontAwesome; transition: all 0.3s ease 0s; -webkit-transition: all 0.3s ease 0s; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } input[type=checkbox], input[type=radio] { display: none; } /* -------------------- アイコンの指定のみ -------------------- */ label { padding-left:1.8em; } label:before { position: absolute; top:-.1em; left:-.3em; width: 1.5em; font-size:1.4em; color:#c6c6c6; } input[type=checkbox] + label:before { content: "\f096"; } input[type=checkbox]:checked + label:before { content: "\f14a"; color:#409AD5; } input[type=radio] + label:before { content: "\f10c"; } input[type=radio]:checked + label:before { content: "\f192"; color:#409AD5; } /* -------------------- CSS + アイコン -------------------- */ label { padding-left:1.8em; } label:before { position: absolute; top:-3px; left:0; width:1.25em; height:1.25em; line-height:1.25; margin-right:.5em; border-radius: 5px; } input[type=checkbox] + label:before { content: "\f00c"; border:#bebebe 1px solid; background:#fff; color:rgba(255,255,255,0); } input[type=checkbox]:checked + label:before { content: "\f00c"; border:#24A592 1px solid; background:#2EB2A0; color:rgba(255,255,255,1); } input[type=radio] + label:before { border:#bebebe 1px solid; border-radius: 2em; background:#fff; } input[type=radio]:checked + label:before { border:#24A592 1px solid; } input[type=radio] + label:after, input[type=radio]:checked + label:after { position: absolute; top:-3px; left:0; width:1.25em; height:1.25em; line-height:1.25; border-radius:2em; } input[type=radio]:checked + label:after { background:#2EB2A0; -webkit-box-shadow:0 1px 3px rgba(0,0,0,.3); box-shadow:0 0 0 1px #24A592 inset, 0 0 0 6px rgba(255,255,255,1) inset; } /* -------------------- apple 風 -------------------- */ label:before { width:1.25em; height:1.25em; line-height:1.2; margin-right:.5em; border-radius: 5px; } input[type=checkbox] + label:before, input[type=radio] + label:before { border:#bebebe 1px solid; background:#fff; background-image: -o-linear-gradient(top, #FFFFFF 0%, #F3F3F3 50%, #ECECEC 50%, #DDDDDD 100%); background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFFFFF), color-stop(50, #F3F3F3), color-stop(50, #ECECEC), color-stop(100, #DDDDDD)); background-image: -webkit-linear-gradient(top, #FFFFFF 0%, #F3F3F3 50%, #ECECEC 50%, #DDDDDD 100%); background-image: linear-gradient(to bottom, #FFFFFF 0%, #F3F3F3 50%, #ECECEC 50%, #DDDDDD 100%); color:rgba(255,255,255,0); } input[type=checkbox]:checked + label:before, input[type=radio]:checked + label:before { border:#6C7993 1px solid; background:#76C1FD; background-image: -o-linear-gradient(top, #CAE6FD 0%, #8CC9FC 50%, #76C1FD 50%, #CFFFFF 100%); background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #CAE6FD), color-stop(50, #8CC9FC), color-stop(50, #76C1FD), color-stop(100, #CFFFFF)); background-image: -webkit-linear-gradient(top, #CAE6FD 0%, #8CC9FC 50%, #76C1FD 50%, #CFFFFF 100%); background-image: linear-gradient(to bottom, #CAE6FD 0%, #8CC9FC 50%, #76C1FD 50%, #CFFFFF 100%); color:#001732; } input[type=checkbox] + label:before { content: "\f00c"; } input[type=radio] + label:before { position:relative; top:.2em; border-radius: 2em; } input[type=radio] + label:after, input[type=radio]:checked + label:after { position:absolute; top:.58em; left:.4em; width:.5em; height:.5em; border-radius:1em; } input[type=radio]:checked + label:after { background:#001732; }
0 件のコメント :
コメントを投稿