CSS appearanceプロパティで作るカスタムラジオボタンの実装方法
CSSのappearanceプロパティを使用すると、ユーザーのOS(オペレーティングシステム)が標準で備えるプラットフォームネイティブなスタイルに基づいて要素をスタイリングできます。このプロパティを「none」に設定すれば、ブラウザ既定の外観を無効化でき、ラジオボタンやチェックボックスなど、通常はスタイル変更が難しいフォーム部品も自由にデザインできるようになります。
appearanceプロパティの構文
CSSのappearanceプロパティの基本構文は以下のとおりです。
Selector {
appearance: /*値*/;
-webkit-appearance: /*値*/; /* Safari・Chrome用 */
-moz-appearance: /*値*/; /* Firefox用 */
}
主要ブラウザとの互換性を保つため、-webkit-appearance(Safari・Chrome向け)や-moz-appearance(Firefox向け)といったベンダープレフィックスを併せて指定するのが一般的です。
サンプル1:シンプルなカスタムラジオボタン
次の例では、appearanceプロパティでラジオボタンの既定の見た目を消し、独自のデザインを適用しています。
<!DOCTYPE html>
<html>
<style>
input[type=radio] {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
padding: 10px;
background-color: orange;
border-radius: 50%;
}
input[type=radio]:checked {
background-color: magenta;
}
input[type=radio]:hover {
cursor: pointer;
}
</style>
<body>
カスタムラジオボタンのサンプル<br/>
<form>
<label for="r1">r1</label>
<input type="radio" id="r1" name="btn" value="v1">
<input type="radio" id="r2" name="btn" value="v2">
<label for="r2">r2</label>
</form>
</body>
</html>
上記コードの表示結果は以下のとおりです。

この例では、未選択状態のラジオボタンをオレンジ色の円形にし、チェックされた瞬間にマゼンタ色へと変化させています。さらに、ホバー時にカーソルをポインターへ切り替えることで、クリック可能であることを視覚的に伝えています。
サンプル2:アニメーション付きトグルスイッチ風のカスタムチェックボックス
次の例では、appearanceプロパティに加えて::after疑似要素とtransitionを組み合わせ、スムーズなアニメーション効果を持つトグルスイッチ風のチェックボックスを作成しています。
<!DOCTYPE html>
<html>
<style>
label {
display: flex;
align-items: top;
}
label input {
margin: 0px 10px 0px 10px;
}
input[type=checkbox] {
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
border: 3px ridge currentcolor;
border-radius: 60px;
box-sizing: content-box;
color: lightblue;
height: 60px;
padding: 2px 2px 2px 2px;
transition-duration: 280ms;
transition-property: border-color, color;
transition-timing-function: ease;
width: 20px;
}
input[type=checkbox]:checked {
color: lightgreen;
}
input[type=checkbox]::after {
background-color: currentcolor;
border-radius: 10px 10px 10px 10px;
content: "";
display: block;
height: 20px;
transform: translateY(0px);
transition: transform 300ms ease-in;
width: 20px;
}
input[type=checkbox]:checked::after {
transform: translateY(40px);
}
</style>
<body>
<p>
カスタムラジオボタンのサンプル
<label for="crb">
青
<input id="crb" type="checkbox"/>
<br/><br/><br/>緑
</label>
</p>
</body>
</html>
上記コードの表示結果は以下のとおりです。


チェックの状態に応じて内部のつまみ(ノブ)が上下に移動し、枠線とノブの色がライトブルーからライトグリーンへと滑らかに変化します。currentcolorを活用すると、colorプロパティの値をborderやbackgroundにまとめて反映できるため、配色管理がシンプルになる点もポイントです。
まとめ
appearanceプロパティを「none」に設定することで、フォーム部品の既定スタイルを解除し、自由度の高いカスタムデザインを実現できます。ベンダープレフィックスを適切に指定すれば、主要ブラウザ間でも一貫した見た目を維持できます。ぜひ実際のプロジェクトでも活用してみてください。
-
CSSでカスタムスクロールバーを作成する方法|::-webkit-scrollbarの使い方を実例付きで解説
CSSを使えば、標準のスクロールバーのデザインを自由にカスタマイズできます。本記事では、::-webkit-scrollbar系の擬似要素を活用し、スクロールバーの幅・トラック・つまみ(サム)の色や形状を変更する具体的な方法をコード例とともに解説します。 カスタムスクロールバーのコード例 以下は、ページ全体に適用されるカスタムスクロールバーを作成するHTMLとCSSの完全なコード例です。 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=
-
CSSのappearanceプロパティを使ったカスタムチェックボックスの作り方
CSSのappearanceプロパティは、要素をユーザーのOSネイティブなスタイルに合わせて表示したり、逆にデフォルトの外観を無効化して独自のデザインを適用したりできる便利なプロパティです。この記事では、appearance: none;を活用して、チェックボックスを自由にカスタマイズする方法を解説します。appearanceプロパティとは通常、チェックボックスやラジオボタンなどのフォーム部品は、ブラウザやOSが提供する標準的な見た目で表示されます。appearanceプロパティにnoneを指定すると、このデフォルトスタイルを解除できるため、背景色・角丸・影などを自由に設定したオリジナルデザイ