コンテンツにスキップ

フレームワーク既定値は最後の手段として触る#

Lesson #framework #css #architecture updated 2026-04-14 2 min read

Material for MkDocs・Next.js・Material UI・Tailwind UIなど完成度の高いフレームワークの既定挙動(z-index、focus管理、ナビゲーション、スクロール)を上書きするときは『触らない』を初期方針にする。触るときは必ずモバイル/デスクトップ/キーボード/スクリーンリーダー全モードで検証する。

なぜ重要か#

2026年4月のWiki修正で2件発生した:

  1. デスクトップで起きていない『サイドバー重なり』を予防的に直そうとして.md-sidebarにz-index: 2を付与した結果、モバイルドロワーをコンテンツ下に押し込んでクリック不能にした
  2. Tabキー問題を解消しようとしてdocument$.subscribe(() => main.focus())を強制実行→Materialのレンダリングと干渉してサイドバーが断続的に消失した

両方とも『症状を確認せず予防的に触った』結果。熟成フレームワークは既定値が複数の制約を考慮した結果なので、勝手な上書きは別のものを壊す確率が高い。

適用ルール#

  1. フレームワークのデフォルトCSS/JS(z-index、position、focus、scroll)を上書きする時は、その指定が解決する具体的な再現可能症状を先に確認する
  2. 上書きするなら必ず@mediaでスコープを切る、document$.subscribeのような全体フックは受動的(Tab押下時のみ等)にする
  3. 『念のため』『予防的に』『将来に備えて』は触らない理由。YAGNIを厳格適用
  4. モバイル変更はCSSとJSをペアで設計(touch-action、pointer-events、user-selectを必ず確認)
  5. 触った後は最低限『モバイル幅レスポンシブ』と『キーボードのみナビ』で動作確認

関連する反パターン#

  • 『よく分からないがz-indexを上げてみる』
  • 『focus管理を強化したつもりが既存のフォーカス管理と二重起動』
  • 『デフォルトのbreakpointを書き換えてレイアウトが破綻』

関連エントリ#