【スマートフォン制作向け】radioボタンをCSSのみでカスタマイズ

【スマートフォン制作向け】radioボタンをCSSのみでカスタマイズ

イメージ

こんにちは、GWは神奈川県から一歩も出ませんでした ishida です。

さてさて、今回は最近スマートフォン案件が増えてきましたので実務で使えそうなコーディングTipsをば。

スマートフォンでは、radioボタンがデフォルトのままだとかなり押しにくいですよね。
対象がスマートフォンであれば(IEちゃんを除けばOKかも)CSSだけで、意外とカスタマイズができます。

HTML

HTMLのコードは以下になります。

<ul class="list">
<li><input type="radio" name="gender" id="gender1" value="1"><label for="gender1">男性</label></li>
<li><input type="radio" name="gender" id="gender2" value="2"><label for="gender2">女性</label></li>
</ul>

CSS

input[type="radio"] {
    position: relative;
    -webkit-appearance: button;
    appearance: button;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    width: 24px;
    height: 24px;
    content: "";
    background-color: #FFFFFF;
    border: 1px solid #999999;
    -webkit-border-radius: 24px;
    border-radius: 24px;
    -webkit-box-shadow: inset 4px 4px 10px rgba(0,0,0,0.2);
    box-shadow: inset 4px 4px 10px rgba(0,0,0,0.2);
    vertical-align: middle;
    cursor: pointer;
}

input[type="radio"]:checked:after {
    display: block;
    position: absolute;
    top: 5px;
    left: 5px;
    content: "";
    width: 12px;
    height: 12px;
    background: #CC0000;
    -webkit-border-radius: 12px;
    border-radius: 12px;
}

完成データ

※画像キャプチャにしています。

ポイント

  • radioボタン自体、appearanceプロパティをbuttonにしています。
  • radioボタンがチェックされた場合には、:checked疑似クラスをつかいます。
  • さらに:checked疑似クラス + :after疑似要素を組み合わせて、
    チェックされた時のデザインを作ります。

CSSオンリーで実現できるデザインなので限界はありますが、これくらいだったらJS使わなくても全然イケます。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ