###前提・実現したいこと
jQueryで、画面幅によって処理分けしているヘッダーメニューがあります。
1025px以上でドロップダウン型、かつスクロール時に縮小版ヘッダーに切り替えます。
1024px以下でドロワー型、縮小版ヘッダーを表示します。
###発生している問題・エラーメッセージ
画面をリサイズして1024pxをまたいだとき、不具合が生じます。
(ページ読み込み時の画面幅の処理のまま変わらない)
###該当のソースコード
javascript
1if ($(window).width() > 1024) { 2 $('#main_header_nav li, #lower_header_nav li').hover(function() { 3 $('>ul', this).stop(true, true).slideDown('fast'); 4 }, function() { 5 $('>ul', this).stop(true, true).slideUp('fast'); 6 }); 7} 8 9$('#sp_menu_open, #sp_menu_close').click(function() { 10 $('#lower_header_nav').animate({ width: 'toggle' }); 11}); 12 13if ($(window).width() > 1024) { 14 changeHeader(); 15 $(window).scroll(changeHeader); 16} 17 18function changeHeader() { 19 var headerChangeHeight = 200; // 切り替わるタイミング 20 if ($(window).scrollTop() >= headerChangeHeight) { 21 $('#lower_header').slideDown('fast'); 22 } else { 23 $('#lower_header').slideUp('fast'); 24 } 25}
###試したこと
resizeを使って以下の通り書きかえました。
javascript
1dropDownMenu(); 2$(window).resize(dropDownMenu); 3 4function dropDownMenu() { 5 if ($(window).width() > 1024) { 6 $('#main_header_nav li, #lower_header_nav li').hover(function() { 7 $('>ul', this).stop(true, true).slideDown('fast'); 8 }, function() { 9 $('>ul', this).stop(true, true).slideUp('fast'); 10 }); 11 } 12} 13 14drawerMenu(); 15$(window).resize(drawerMenu); 16 17function drawerMenu() { 18 if ($(window).width() <= 1024) { 19 $('#sp_menu_open, #sp_menu_close').click(function() { 20 $('#lower_header_nav').animate({ width: 'toggle' }); 21 }); 22 } 23} 24 25changeHeader(); 26$(window).scroll(changeHeader); 27 28function changeHeader() { 29 if ($(window).width() > 1024) { 30 var headerChangeHeight = 200; // 切り替わるタイミング 31 if ($(window).scrollTop() >= headerChangeHeight) { 32 $('#lower_header').slideDown('fast'); 33 } else { 34 $('#lower_header').slideUp('fast'); 35 } 36 } 37}
ですが、思うような結果が得られません。
1024px以下にリサイズすると、#lower_headerが表示されません。
1025px以上にリサイズすると、#lower_header_navが表示されません。
また、発生条件がわからないのですが、1024px以下にリサイズした後、ドロップダウンしてしまうことがあります。
また同様に、1025px以上にリサイズした後、ドロップダウンが一瞬になる(スライドしない)ことがあります。
調べたり試したり、思いつく限りのことをしましたが、自力では解決できませんでした。
だいぶ混乱しており恐縮ですが、どなたかご教示いただければ幸いです。
よろしくお願いいたします。
###補足情報(言語/FW/ツール等のバージョンなど)
Google CDN jQuery 3.1.0 を利用しています。
回答を得やすくするため、他サイトでも同様の質問をしています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/12 03:29
2017/05/12 05:44
2017/05/12 13:37