3つのアコーディオンボックスを作り、
狭い画面幅では縦並び、広い画面では横並びになる
レスポンシブデザインを作成中です。
アコーディオンは
ヘッダー部とコンテンツ部に分かれており、
ヘッダー部をクリックするとコンテンツ部が開閉する仕組みになっています。
広い画面で横並びにした際にはアコーディオンを無効にしたいため
acHeaderをCSSのメディアクエリで非表示にしています。
ここで問題が発生しました。
画面を開いて、そのままウインドウ幅を拡大縮小する分には
思い通りの動作になるのですが、
1.狭い画面でアコーディオンを開いて画面を広げると横並びが崩れる
2.狭い画面でアコーディオンを開いてから閉じて、そのあと画面を広げると該当のボックスが非表示になる。
どうもslidetoggleが動作した後のdisplay:blockやdisplay:noneが
メディアクエリで指定しているdisplay:inline-blockを上書き(?)されている感じです。
なるべくシンプルなスクリプトで作りたかったので、このような形にしたのですが
どこを修正すれば問題が解決するかわかりません。
ヒントをいただけますと幸いです。
最小限のコードを下記に載せておきます。
よろしくお願いいたします。
<head> <meta charset="utf-8"> <style> div { border:2px solid red; max-width:600px; padding:50px; } .acContent { display:none; } @media(min-width:601px){ .acHeader {display:none;} .acContent{display:inline-block;} } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> <script> $(function() { $('.acHeader').click(function(e){ $('+.acContent', this).slideToggle(500); }) }); </script> </head> <body> <div class="acHeader"> ヘッダー </div> <div class="acContent"> コンテンツ </div> <div class="acHeader"> ヘッダー2 </div> <div class="acContent"> コンテンツ2 </div> <div class="acHeader"> ヘッダー3 </div> <div class="acContent"> コンテンツ3 </div> </body>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/01 02:12