修正・改善ポートフォリオ

PF-002(別ページ):見た目はボタンがあるのにクリックできない不具合を、重なり(z-index)/ pointer-events の観点で切り分けて修正した例です。

PF-002

ボタンが押せない(クリックが効かない)→ 重なり(z-index)を切り分けて修正

種別:不具合修正(HTML/CSS)|想定案件:ヘッダー/CTAボタン/固定要素/LPのクリック不能

課題(症状)

  • 見た目はボタンが表示されているのに、クリック(タップ)しても反応しない。
  • PCではたまに押せるが、スマホだと押せない…など環境差が出ることもある。

Before / After(この場で体験)

操作 下の 「無料相談」 を押して確認
サンプルサイト表示エリア(ここで挙動を確認できます)

モード:Before
Beforeは「ボタンが押せない」状態を再現。Afterは「押せて反応」し、クリックしたら 下に結果が表示 されます。

クリック結果: (Afterでクリックすると、ここに結果が表示されます)
✅ クリックできました(Afterの状態です)
Before: 透明な要素が上に被さっている(クリックを奪っている)状態を再現しています。

わかりやすく言うと:
ボタン自体は正しく表示されていても、透明な“見えない板”が上に乗っているとクリックできません。
今回は「何が上に被さっているか」を切り分けて、ボタンが押せるように直した例です。

技術メモ(原因の考え方)
  • 原因例:装飾レイヤー(疑似要素/背景/固定要素)が前面に来ている(z-index
  • 透明でもクリックは奪う(pointer-events が有効だと上の要素が受け取る)
  • 切り分け:DevToolsで「押せない位置」をクリックして、上に被さっている要素を特定
  • 対策:不要レイヤーに pointer-events: none/ボタン側を前面に(z-index

原因(切り分け)

  • ボタンの上に透明レイヤーが被さり、クリックがそのレイヤーに吸われていた。
  • z-index の優先順位が意図と違い、装飾レイヤーが前面に出ていた。

対応(修正内容)

  1. 被さっているレイヤーを特定(DevToolsでクリック位置の要素を確認)。
  2. 不要な装飾レイヤーに pointer-events: none を付与。
  3. ボタン側を前面に(z-index)してクリックを安定化。
修正コード例(要点)
/* NG:透明レイヤーがクリックを奪う */
.blocker { position:absolute; inset:0; z-index:5; }

/* OK:クリックを奪わない */
.blocker { pointer-events: none; }

/* もしくはボタンを前面へ */
.cta { position: relative; z-index: 10; }

結果

  • ボタンが確実にクリック(タップ)できるようになった。
  • スマホ/PCなど環境差のある「押せない」系トラブルの再発を防止。

対応できること(例)

クリック不能の原因特定 z-index / 重なり修正 固定要素の調整 LPのCTA改善 スマホで押せない対策