Twitter Bootstrap を使用してレスポンシブ Web サイトを構築する場合、タブや折りたたみ (アコーディオン) などの優れた JavaScript コンポーネントを使用できます。ただし、特定のコンポーネントの選択がすべてのデバイスに適しているとは限りません。
私の場合、デスクトップ版ではタブを利用しています。しかし、スマホ版では、タブが3つ以上あると画面サイズが小さくて一列に収まらなくなり使い物にならなくなります。代わりに、モバイル バージョンの場合は、折りたたみが適切な代替手段になります。
私の質問は、そのような変更を実行するベスト プラクティスを明確にすることを目的としています。私は2つの回避策を想像できますが、どちらもかなり醜く、よりクリーンな解決策があるかどうか疑問に思っています:
CSS クラスvisible-desktopで 1つのタブ付きコンテンツを作成し、CSS クラスvisible-phoneで 1 つの折りたたまれたコンテンツを作成します。これには、実際のタブ コンテンツを 2 回配信する必要があるという欠点があり、(私の場合のように) ユーザーが生成した HTML コードが含まれている場合、ユーザーが ID を持つ HTML 要素を入力するとすぐに W3C の無効なコードが発生します。 (この ID はページに 2 回表示されるため)。
JavaScript を介してタブから折りたたみに変更します。これは、a) JavaScript を実行する必要があり、b) 変更が必要なコードが多いため、満足のいく解決策ではありません (ドキュメントのマークアップの違いを参照してください)。