Design

Web Design

CodePen

このページはプロモーションが含まれています。

【CodePen】CSSで作る3Dボタンのアイデア15選

【CodePen】3Dボタンのアイデア

CodePenで公開されている、CSSやJavaScriptで作られた3D(立体)ボタンのアイデアを15個セレクトしました。疑似要素の組み合わせだけで奥行きを出すシンプルな手法から、Three.jsやGSAPを使った本格的な3D表現まで、幅広いアプローチを揃えています。各スニペットには実装のポイントも添えているので、どんな仕組みで立体感を出しているのか、どこを見ればカスタマイズできるのかが把握しやすくなっています。気になるデザインが見つかったら、実際のサイト制作の参考にしてみてください。


3Dボタンのアイデア

3D Fip Button

CSSで作られた回転する立体的なボタン

See the Pen 3D Fip Button by Satyam Singh (@Anon_satyam) on CodePen.

💡 実装のポイント
<span><a>要素のみのシンプル構成。a::before(正面/ボタン色)とa::after(底面)をrotateXで組み立て、hoverでrotateX(-90deg)させることで前面と底面が入れ替わる仕組み。ボタン色はa::beforebackground、テキストはcontent: "BUTTON"で固定されているためCSS側の書き換えが必要。JSは使用していない。

3D Hover Button

CSSで作られた回転する立体的なボタン

See the Pen 3D Hover Button by Micah Ilbery (@micahilbery) on CodePen.

💡 実装のポイント
PugとSCSSで書かれているため、そのまま使う場合は「View Compiled HTML/CSS」からの書き出しが必要。.btn > span::aftercontent: attr(data-label)でHTML側のdata-label属性からテキストを生成する仕組みなので、表示文言はHTMLの属性値を書き換えるだけで変更できる。hoverでrotateX(90deg) translateY(-30%)させて裏面を見せる。

3d Hover Button

CSSで作られたレイヤーを分けて表現した3Dボタン

See the Pen 3d Hover Button by Evgeniy (@Evgeniy_Developer) on CodePen.

💡 実装のポイント
.btn .content配下に.front/.backの2レイヤーをtranslateZで前後に配置し、hoverでrotateY(.5turn)させてFont Awesomeアイコンとテキストを入れ替える仕組み。アイコン表示にはFont Awesomeの読み込みが必須(fa-vk等)。色は.btn--1 iのように連番クラスで個別に指定する設計。


3D Retro Buttons

CSS・JSで作られたレトロ風3Dボタン

See the Pen 3D Retro Buttons by Mike @ Titan Global Tech (@b1tn3r) on CodePen.

💡 実装のポイント
.retro-btnprimary/secondary/danger/warning/success/infoの状態クラスを組み合わせる設計で、色は.btn-inner .content-wrapper.btn-contentbackground-colorをペアで変更する。JS側はmousemoveでカーソル位置を判定しbtn-left/btn-center/btn-rightクラスを切り替えて傾きを変える凝った仕組み。同梱のローダーボタンはLoaderButtonクラスで進捗バーを実装しており、単体利用時は該当ブロックのみ抜き出す必要がある。

CSS 3d Button

CSSで作られたHOVERで角度がつく3Dボタン

See the Pen CSS 3d Button by Shaiq Kar (@kar_shaiq) on CodePen.

💡 実装のポイント
#btnMainperspectiveをかけ、#btnBox(正面)と#btnBottom(底面、常時rotateX(-87deg)で折り曲げ済み)の2枚構成。hoverで#btnBoxrotateX(25deg)#btnBottomrotateX(-70deg)に変化させて押し込み感を出す。色は2つの要素のbackground-colorを変えるだけでOK。JSは不使用。

“3D” Animated Buttons

CSSで作られたHOVERで浮き上がる3Dボタン

See the Pen “3D” Animated Buttons by Jonas Sandstedt (@sandstedt) on CodePen.

💡 実装のポイント
.button::beforeが影用の帯、.button__innerが前面のテキストレイヤーで、hover/focusで.button__innertranslate3D(0,-10px,0)させて浮かせつつ、影の帯を右にスライドさせる仕組み。.button--secondaryクラスを足すだけで配色違いのバリエーションを追加できる設計。hoverだけでなくfocusにも対応しておりアクセシビリティ意識のある実装。

3D Button

CSS・JSで作られた影が特徴の3Dボタン

See the Pen 3D Button by Hamienos Rocha (@HamienosRocha) on CodePen.

💡 実装のポイント
.btn_south-face(奥の面)の上に.btn-3d(手前のボタン)を重ね、hover/activeで.btn-3dbottom値を動かして押し込み感を演出するシンプルな2レイヤー構成。CSS変数--pink等で配色を一括管理している。JS側はmakeShadow()関数で1pxごとに影を重ねてグラデーション状の立体影を動的生成しており、影の色はblueShadow/pinkShadow変数を書き換えれば変更できる。

3d Button with Pressed State

CSSで作られた角度をつけた3Dボタン

See the Pen 3d Button with Pressed State by Jesse Couch (@designcouch) on CodePen.

💡 実装のポイント
ボタン本体は透明にし、::before(グラデーションの正面)と::after(濃い色の底面、rotateX(-40deg)で傾斜)の2つの疑似要素で立体感を作る古典的な手法。hoverでtop:-6pxさせて浮かせ、activeでtop:0に戻すことで押し込みを表現している。色を変えるには::before::after両方のグラデーション色をセットで書き換える必要あり。SCSS(@mixin使用)なのでコンパイルが必要。

3d Button with +/- transform

CSS・JSで作られた3Dトグルスイッチ

See the Pen 3d Button with +/- transform by Christos Hrousis (@christoshrousis) on CodePen.

💡 実装のポイント
.btn_3d > spanが本体、その中のspan::before/::afterの2本線が回転して「+」⇔「-」に切り替わるアイコンボタン。jQueryでclick時にactiveクラスをtoggleし、CSS側で&.active時のtransformを分岐させている。hoverではrotateX(30deg)、activeではrotateX(20deg)と段階的に角度を変える設計。


3D SOCIAL MEDIA ICON – REAL

CSSで作られたソーシャルメディアの3Dボタン

See the Pen 3D SOCIAL MEDIA ICON – REAL by mikoloism (old) (@miko-github) on CodePen.

💡 実装のポイント
独自ライブラリ「YEK」のSCSS mixin(yek-flexyek-size等)に依存した構成で、&::before/&::afterが箱の側面・底面をskewX/skewYで表現している。@mixin bx-variantでSNSごとの配色(YouTube赤・Twitter青等)をまとめて定義。単体で使う場合はSCSSコンパイル環境に加え、Font AwesomeとYEKライブラリのCDN読み込みが必要な点に注意。

CSS 3D Blend Mode Buttons

CSSで作られたブレンドモードが特徴の3Dボタン

See the Pen CSS 3D Blend Mode Buttons by Lisi (@lisilinhart) on CodePen.

💡 実装のポイント
mix-blend-mode: color-dodgeを使い、ボタン背景色と::before(赤)/::after(紫)の疑似要素を重ねて発光したような配色に見せる仕組み。hover時は--zカスタムプロパティを使ったtranslateWobbleアニメーションで疑似要素を前後に揺らす。メニュー全体も常時rotateAngleで自動回転しているため、静止させたい場合はmainanimationを削除する必要がある。

3D Button

CSSで作られたホバーエフェクトが特徴的な3Dボタン

See the Pen 3D Button by Eric Van Holtz (@vanholtzco) on CodePen.

💡 実装のポイント
.button-3d全体をperspective配下に置き、label.icon/.text::before(奥行き用の複製)をtranslateZで前後配置。hoverで.button-3dごとtranslateY(-3vw)浮かせつつ、影用の複製テキストにfilter: blurをかけて奥行きを演出する。ボタン自体もspinキーフレームで常時ゆっくり回転しているため、静的にしたい場合はbuttonanimationを外す必要がある。

3d hover effect

CSS・JSで作られたチルトエフェクトで表現した3Dボタン

See the Pen 3d hover effect by Jason Prickett (@yust) on CodePen.

💡 実装のポイント
JS側でmousemoveイベントごとにマウス位置からボタン中心までの角度をatan2で計算し、rotateX/rotateYと光沢用グラデーションの角度を動的に反映させる仕組み。光沢レイヤー(.effect3d--shine)はJSでcreateElementして動的に追加している。複数要素に適用したい場合は.moveable-3dクラスを付与するだけで同じロジックを使い回せる。

CSS Only “hologram” effect Button 3D Icon

CSSで作られたホログラムのエフェクトが効果的な3Dボタン

See the Pen CSS Only “hologram” effect Button 3D Icon by Takane Ichinose (@takaneichinose) on CodePen.

💡 実装のポイント
ボタン全面を細かい.hover-colのグリッドで覆い、SCSSの@forループで各セルhover時に背後の3DアイコンのrotateX/rotateY角度を1つずつ計算する構成。3Dアイコン自体も.wall×4面+.roof.floorなど多数の要素をtranslateZで組み立てた本格的な立体モデル。JSは一切使用せず、PugのforループでHTML生成も簡略化しているが、SCSS/Pugのコンパイル環境が前提。

3D button

Three.jsで作られたWebGL表現の3Dボタン

See the Pen 3D button by Robin Delaporte (@robin-dela) on CodePen.

💡 実装のポイント
見た目は普通のボタンだが、裏側でThree.jsのWebGLシーン(球体・トーラス・円錐)をcanvasにレンダリングしており、hover時にGSAP(TweenMax)でそれぞれの図形をスケール・位置アニメーションさせる本格的な実装。導入にはthree.jsgsap(TweenMax)の外部ライブラリが必須で、テクスチャ画像も外部URLに依存しているため、そのまま流用するにはアセットの用意が必要。


3Dボタンとは?

3Dボタンとは、CSSのperspectivetransformプロパティ、あるいはThree.jsのようなWebGLライブラリを使って、平面的なボタンに奥行きや立体感を持たせた表現のことです。押し込み・浮き上がり・回転といったモーションと組み合わせることで、クリック(タップ)可能であることを直感的に伝えられるのが特徴です。

実装方法は大きく分けて、疑似要素を積み重ねて奥行きを表現するCSSのみの手法と、マウス位置に応じてリアルタイムに角度を計算するJavaScript併用の手法があります。前者は軽量で導入しやすく、後者はよりインタラクティブで高度な表現が可能です。サイトのトーンや実装コストに合わせて選ぶとよいでしょう。

CodePenとは?

CodePenは、HTML、CSS、JavaScriptを使ってウェブページのプロトタイプや実装を行うことができるオンラインの開発環境です。

CodePenでは、ウェブ開発者やデザイナーが、ブラウザ上でコードを書きながら、すばやく試行錯誤することができます。ユーザーは自分のプロジェクトを公開し、他のユーザーによるフィードバックを受けたり、共有することもできます。

CodePenには、エディター機能が搭載されており、HTML、CSS、JavaScriptのコードを入力することができます。また、ユーザーが公開したプロジェクトは、フロントエンドの技術を利用して動的な表現やアニメーションを作ることができます。

よくある質問

  • Q

    SCSSで書かれているコードはそのまま使えますか?

    A

    そのままでは動作しません。SCSSはコンパイルが必要なため、Sassのビルド環境がない場合はCodePen上の「View Compiled CSS」から通常のCSSを書き出して使用してください。

  • Q

    ホバーで動く3Dボタンはスマホでも同じように動作しますか?

    A

    タッチデバイスには:hover状態がないため、そのままでは効果が発火しない場合があります。タップ操作でも同様の演出を出したい場合は、JavaScriptでtouchstartイベント等を検知してクラスを切り替える処理を追加する必要があります。

  • Q

    Three.jsやGSAPなど外部ライブラリを使っているPenはどう扱えばいいですか?

    A

    該当のPenをそのまま動かすには、CodePen側で読み込まれているCDNのURL(例:three.js、GSAP/TweenMax)を自サイトの<head>にも追加する必要があります。CodePenの「JS」設定パネルにある「Add External Scripts/Pens」の欄で読み込み元を確認できます。

  • Q

    perspectivetransform-style: preserve-3dは主要ブラウザで使えますか?

    A

    Chrome、Safari、Firefox、Edgeなどの主要モダンブラウザでは問題なく利用できます。ただし古いIEでは非対応のため、対象ユーザーに古いブラウザが含まれる場合は、立体表現を使わない代替スタイルの用意を検討してください。