年追加でタブ表示がずれる?表示不具合を構造から見直しました
年別で表示しているコンテンツに新しい年を追加したところ、タブ表示がずれてしまう不具合が発生しました。原因はPHPの出力ではなく、ページ全体をまとめて制御していたJavaScriptの仕様にありました。
さらに修正後、別ページのタブが動かなくなるという二次的な問題も発生。HTML構造の違いを踏まえ、スコープを限定した制御へ見直すことで、複数ページで安定動作する形に改善しました。
小さな表示修正でも、設計次第では思わぬ影響が出ることがあります。今回はその一例でした。
今回のご相談内容
今回は、年別で情報を整理しているページにて、
- 最新の年を追加したい
- 他のカテゴリやページには影響を出したくない
- 今後の年追加も管理しやすくしたい
というご要望があり、保守対応を行いました。
一見すると単純な「年の追加」ですが、実装後に表示のズレが発生しました。
発生していた症状・エラー内容
実際に発生していた症状は次の通りです。
- 新しい年を追加すると、他カテゴリのタブ表示がずれる
- タブをクリックしても、対応する内容が正しく表示されない
- 修正後、別ページのタブが反応しなくなった
PHPで出力している内容自体は正しく見えるものの、画面上の動きと一致しない状態でした。
原因の特定ポイント
原因は、JavaScriptの「制御範囲」にありました。
もともとのタブ切り替え処理は、ページ内に存在するすべての .tab と .panel をまとめて制御していました。そのため、一部のタブ数が増えると、インデックス番号がずれて他の表示にも影響してしまう構造になっていました。
さらに別ページでは、タブとパネルのHTML構造が微妙に異なっていました。その違いを考慮せずに制御範囲を限定してしまったことで、今度はそちらのタブが動かなくなるという二次的な不具合が発生しました。
実際に行った対応内容
今回の対応では、次の2点を見直しました。
1. 年管理の整理(PHP側)
カテゴリごとに表示する年を配列で管理する構造へ変更しました。
これにより、
- タブと表示内容を同じデータから生成
- 年追加は配列の修正のみで対応可能
という保守しやすい設計へ整理しました。
2. タブ切り替え処理の見直し(JavaScript側)
タブをクリックしたときに、「そのタブが属しているグループ内だけを制御する」方式へ変更しました。
ページ全体を一括で制御するのではなく、最も近い親要素を基準に対象を特定することで、複数ページでも独立して動作するように修正しました。
対応後の結果・改善点
対応後は、
- 年を追加しても表示がずれない
- 他のカテゴリやページへ影響しない
- タブ切り替えが安定動作する
- 今後の年追加が容易になる
という状態に改善しました。
見た目の変更はわずかですが、内部の構造は大きく整理されています。
今回の対応から分かったこと
今回の対応で改めて感じたのは、表示のズレは「出力の問題」とは限らないということです。
タブのようなUIは、JavaScriptの制御方法に大きく依存します。とくに、ページ全体をまとめて扱っていないかどうかは重要なポイントです。
小さな修正でも、設計次第では影響範囲が広がります。逆に、構造を一度整理しておけば、将来の変更はぐっと楽になります。
同様のトラブルを防ぐために
年別表示やタブUIを使用しているサイトでは、次の点を意識すると安心です。
- タブと表示内容の数が常に一致しているか
- JavaScriptがページ全体をまとめて制御していないか
- 将来の追加を前提とした設計になっているか
定期的に発生する更新こそ、仕組みの見直しが効果的です。
メディアプライムスタイルのサポートについて
メディアプライムスタイルでは、単なる表示修正だけでなく、「壊れにくい構造」への整理も大切にしています。
タブがずれる、表示が合わない、更新のたびに不具合が出る、といったお悩みは、設計の見直しで改善できることが多くあります。
大きな改修でなくても大丈夫です。
気になる点がありましたら、お気軽にご相談ください。
🐾 さぽたん日記からのご案内
ホームページを育てるお手伝い
ホームページは作って終わりではなく、
小さな修正や改善を重ねながら育てていくものです。
日々の対応内容を「さぽたん日記」でご紹介しています。