ここまでで、PC時のレイアウトも含めほぼ完成ですが、今のままだとPC時にもjQueryのアコーディオンパネルが動いてしまうので、if文でウィンドウサイズがスマホサイズの時のみに動くように条件分岐をしてみましょう。
また、スマホの機種によっては、「touchstart」の動きが安定しない為、タップした際にアコーディオンパネルが開いて閉じる、という挙動になってしまうので、アコーディオンパネルのようにslideToggleを使う場合はアニメーションが実行中はアニメーションの処理を受け付けないようにしましょう。
元のアコーディオンパネルの記述
// アコーディオン $('.toggle').find('h2').on('click touchstart',function(){ $(this).siblings('dl').slideToggle(300, function(){ $(this).parent().toggleClass('close'); }); });
新しい記述
スマホサイズの時のみに動くようにif文と.not(':animated')を追加
// アコーディオン $('.toggle h2').on('click',function(){ if( $('body').width() <= 640){ $(this).siblings('dl').not(':animated').slideToggle(300); $(this).find('span').toggleClass('close'); return false; }; });