
CSSやJavaScriptで表現されたトグルボタン(スイッチ)のアイデアをCodePenから15個セレクトしました。シンプルなON/OFFのチェックボックス表現から、SVGフィルターやGSAPを使った凝ったモーションまで幅広いバリエーションを集めています。各スニペットには実装のポイントも添えているので、どんな仕組みで動いているのか、どこを見ればカスタマイズできるのかが把握しやすくなっています。気になるデザインが見つかったら、実際のサイト制作の参考にしてみてください。
トグルボタン(スイッチ)のアイデア
Toggles
カラフルな8種類のトグルボタン(スイッチ)のアイデア
See the Pen Toggles by Olivia Ng (@oliviale) on CodePen.
- Author : Olivia Ng
- Link : CodePen – Demo
💡 実装のポイント
Pug+SCSSで書かれた8パターン構成。.normal・.transparent・.checkcross・.pancake-stack・.dog-rollover・.basketball-hoop・.beer-pongなど、パターンごとに専用クラスが割り当てられているので必要な1つだけ抜き出して使える。透明なinputをlabelに重ねて:checkedで見た目を切り替える仕組みで、バスケやビールポンなど演出が凝ったパターンは対応する@keyframesも一緒にコピーする必要あり。
Pure CSS toggle buttons
CSSのみで作られた5種類のトグルボタン
See the Pen Pure CSS toggle buttons by Mauricio Allende (@mallendeo) on CodePen.
- Author : Mauricio Allende
- Link : CodePen – Demo
💡 実装のポイント
共通クラス.tgl(非表示チェックボックス)+隣接する.tgl-btnラベルの構成に、.tgl-light・.tgl-ios・.tgl-skewed・.tgl-flat・.tgl-flipの5テーマクラスを組み合わせる仕組み。Skewed・Flipパターンはdata-tg-off/data-tg-on属性の値をcontent: attr()で表示しているので、テキストを変える場合はHTML側の属性を書き換える。JSは一切不要。
Pure CSS Toggle Buttons | ON-OFF Switches
CSSのみで作られた18種類のトグルボタンセット
See the Pen Pure CSS Toggle Buttons | ON-OFF Switches by Himalaya Singh (@himalayasingh) on CodePen.
- Author : Himalaya Singh
- Link : CodePen – Demo
💡 実装のポイント#button-1〜#button-18のID指定で18パターンが完全独立。作者コメントに「どのボタンのCSSも単体でコピーしやすいよう、あえて冗長に書いている」とある通り、各IDごとに::before/::afterのスタイルを丸ごと再定義しているだけなので、使いたい番号のブロックだけ抜き出せば単体で動作する。JSなしの純CSS実装。
Gooey Toggle Switch
流体でスイッチするトグルボタンのアイデア
See the Pen Gooey Toggle Switch by Nicolas Jesenberger (@nicolasjesenberger) on CodePen.
- Author : Nicolas Jesenberger
- Link : CodePen – Demo
💡 実装のポイント
SVGフィルターのfeGaussianBlur+feColorMatrixを組み合わせた「goo」効果で、2つの円がくっついたり離れたりする液体風の動きを表現。色は.toggle-containerの:nth-child()ごとに--active-colorカスタムプロパティで管理されているので、パターンごとの色替えはCSS変数を変えるだけでOK。JSは使わずチェックボックスの:checkedのみで制御。
Slap Toggle
めくれるイメージのトグルボタンのアイデア
See the Pen Slap Toggle by Yariv Fruend (@YarivFrd) on CodePen.
- Author : Yariv Fruend
- Link : CodePen – Demo
💡 実装のポイント
2つのradioボタンと#flapのめくれ板をperspective+transform-style: preserve-3d+rotateYで3D的に反転させる仕組み。JSは#flapのテキストを選択したラベルの内容に書き換える処理と、反転後に少し揺り戻すバウンド演出のみを担当。色は--accent変数1つで管理。
Colorful Theme Switch
ナイトモードのトグルボタンのアイデア
See the Pen Colorful Theme Switch by Jon Kantner (@jkantner) on CodePen.
- Author : Jon Kantner
- Link : CodePen – Demo
💡 実装のポイント
JS不使用が特徴で、body:has(.switch__input:checked)という:has()擬似クラスだけでページ全体をダークモードに切り替えている。太陽・月のアイコンはSVGで、位置や透明度の変化はCSSトランジションのみ。作者コメントにもある通り:has()はFirefoxでの対応状況に注意が必要。
Night && Day Toggle ☀️/🌙 [Completed It!]
昼/夜でイメージしやすいトグルボタンのアイデア
See the Pen Night && Day Toggle ☀️/🌙 [Completed It!] by Jhey (@jh3y) on CodePen.
- Author : JHEY
- Link : CodePen – Demo
💡 実装のポイント
大量のSVGイラストで構成された非常に凝った実装。ボタンクリック時にJSが[aria-pressed]属性を切り替え、それに連動する--darkというCSSカスタムプロパティ(0か1)を軸に、雲や星、パイロットのクマなどあらゆる要素の位置・拡大率がcalc()で一括計算されている。実務に丸ごと転用するより、CSS変数1つで全体をアニメーションさせる考え方の参考にするのがおすすめ。
Night & Day
昼/夜のアニメーションが特徴的なトグルボタンのアイデア
See the Pen Night & Day by Steve Gardner (@ste-vg) on CodePen.
- Author : Steve Gardner
- Link : CodePen – Demo
💡 実装のポイント
GSAPのタイムラインでclipPathの円(#circle)を一気に拡大させて画面を昼→夜に切り替え、拡大しきったタイミングで<use>要素のhrefを#day/#nightに瞬時に差し替えることで違和感なく背景を入れ替えるトリックを使用。星の瞬きや雲の流れも別途gsap.to()でランダム・無限ループさせている。JS依存度が高く、GSAP本体の読み込みが前提。
Let there be light 💡
ライトのスイッチをイメージさせるトグルボタンのアイデア
See the Pen Let there be light 💡 by Dilum Sanjaya (@dilums) on CodePen.
- Author : Dilum Sanjaya
- Link : CodePen – Demo
💡 実装のポイント
GSAPのMorphSVGPluginを使い、紐(#rope)をマウスダウンで伸ばし、マウスアップでバウンドしながら元に戻すモーフィングを実装。isChecked変数のON/OFFに応じてノブの位置・電球の色・光の広がり(.lightの幅高さ)をgsap.to()で変化させている。GSAP本体と有償プラグインのMorphSVGPluginが必須。
Tuggable Light Bulb! 💡(GSAP Draggable && MorphSVG)
引っ張って操作するライトスイッチのアイデア
See the Pen Tuggable Light Bulb! 💡(GSAP Draggable && MorphSVG) by Jhey (@jh3y) on CodePen.
- Author : JHEY
- Link : CodePen – Demo
💡 実装のポイント
GSAPのDraggableで紐を実際にドラッグでき、50px以上引っ張るとあらかじめ用意された複数の紐カーブ(SVGパス)をMorphSVGPluginで順番にモーフィングさせてスイッチが入る演出。Stylus記法の--onカスタムプロパティ(0/1)が電球の色・輝きをすべて計算しており、GSAP本体+Draggable+MorphSVGPluginの3点セットが必須という上級者向け構成。
Neon Toggle Switch
リアルな表現のトグルボタン
See the Pen Neon Toggle Switch by Jon Kantner (@jkantner) on CodePen.
- Author : Jon Kantner
- Link : CodePen – Demo
💡 実装のポイント
SVGのfeGaussianBlurフィルターで枠線を光らせるネオン管風の演出。枠線・ノブそれぞれにstroke-dasharrayを仕込み、ON時にだけ描画されるよう値を切り替えている。色は--on-hue1・--on-hue2のグラデーション用カスタムプロパティ2つで管理。JSなしの純CSS+SVG実装。
3D Orange Switch (Pure CSS)
CSSのみで作られた立体的なトグルボタン
See the Pen 3D Orange Switch (Pure CSS) by Yoav Kadosh (@ykadosh) on CodePen.
- Author : Yoav Kadosh
- Link : CodePen – Demo
💡 実装のポイント
左右の.indicator.left/.indicator.rightがオレンジ・グレーの半円を表し、base64エンコードしたSVGノイズ画像を重ねて質感を出しているのが特徴。ノブ本体(.button)はleft: 40%への移動だけで切り替わるシンプルな仕組みで、色は--accent-hue変数のみで管理。JSは使用していない。
Skillet Switch
フライパンで表現されたトグルボタンのアイデア
See the Pen Skillet Switch by Jon Kantner (@jkantner) on CodePen.
- Author : Jon Kantner
- Link : CodePen – Demo
💡 実装のポイント.switch:has(:checked)という:has()擬似クラスでフライパン全体を傾けるrotateYアニメーションを発火させ、卵黄がtranslateX+rotateで滑るように移動する仕組み。data-pristine属性と小さなJSクラスで、ページ読み込み時に無駄なアニメーションが再生されないよう制御している。こちらも:has()を使うためFirefoxでの対応状況に要注意。
Toothed Toggle – CSS
CSSのみで作られた歯車風のトグルボタン
See the Pen Toothed Toggle – CSS by Josetxu (@josetxu) on CodePen.
- Author : Josetxu
- Link : CodePen – Demo
💡 実装のポイント.track-top/.track-botという上下2列の<span>を、それぞれ異なるtransform-originで逆方向に回転させることで歯車が噛み合っているように見せる仕組み。ON/OFFの光る色は--lgカスタムプロパティを@keyframes経由で書き換えて表現しており、JSは一切使用していない。
Realistic Red Switch (Pure CSS)
CSSのみで作られたリアルなスイッチ
See the Pen Realistic Red Switch (Pure CSS) by Yoav Kadosh (@ykadosh) on CodePen.
- Author : Yoav Kadosh
- Link : CodePen – Demo
💡 実装のポイント
SCSSの$color・$rotation・$pivot-distanceなどの変数と、darken()・lighten()・adjust-hue()といったSassのカラー関数を多用したリアルな質感が特徴。perspective+transform-style: preserve-3d+rotateXでボタンを傾け、.light・.dots・.characters・.shine・.shadowの5層を重ねて立体感を演出。Sass関数を使っているため「View Compiled CSS」で書き出したものを使う必要がある。
トグルボタンとは?
トグルボタンはWebデザインで頻繁に使用され、主に2つの状態の切り替えに利用されます。デザイン要素では、ユーザービリティやUXに注意を払い、選択状態と非選択状態の視覚的な差異を強調します。アクセシビリティにも配慮し、セマンティクスや支援技術との互換性を確保します。アニメーションはユーザーに視覚的なフィードバックを提供し、レスポンシブデザインでは異なるデバイスに対応することが重要です。
CodePenとは?
CodePenは、HTML、CSS、JavaScriptを使ってウェブページのプロトタイプや実装を行うことができるオンラインの開発環境です。
CodePenでは、ウェブ開発者やデザイナーが、ブラウザ上でコードを書きながら、すばやく試行錯誤することができます。ユーザーは自分のプロジェクトを公開し、他のユーザーによるフィードバックを受けたり、共有することもできます。
CodePenには、エディター機能が搭載されており、HTML、CSS、JavaScriptのコードを入力することができます。また、ユーザーが公開したプロジェクトは、フロントエンドの技術を利用して動的な表現やアニメーションを作ることができます。
よくある質問
-
SCSSで書かれているコードはそのまま使えますか?
そのままでは動作しません。SCSSはコンパイルが必要なため、Sassのビルド環境がない場合はCodePen上の「View Compiled CSS」から通常のCSSを書き出して使用してください。
-
:has()を使ったトグルボタンはどのブラウザで使えますか?Chrome・Edge・Safariの最新版では問題なく動作しますが、Firefoxは対応が遅れていた時期があるため、本番環境で採用する際は事前に最新のブラウザ対応状況を確認してください。
-
GSAPを使ったトグルボタンを実装するには何が必要ですか?
GSAP本体に加えて、記事内で紹介しているパターンでは
MorphSVGPluginやDraggableといった追加プラグインの読み込みが必要です。それぞれ別途スクリプトタグでの読み込みが必要になるので、CodePen上の設定(Add External Scripts/Pens)を確認してください。 -
トグルボタンはアクセシビリティ的に問題ありませんか?
<input type="checkbox">をベースにしたものはキーボード操作にも対応しやすい一方、視覚的な意味が伝わりにくい場合があります。role="switch"やaria-label、スクリーンリーダー専用テキスト(.switch__srのようなクラス)を併用することを推奨します。

