前提・実現したいこと
HTML/CSS、javascript初学者です。基本的なことかもしれませんが、数日悩んで解決できずにおりますのでアドバイスを頂けたらと思います。
ヘッダー部分のメニューバーをPCサイズではhoverでドロップダウン、タブレット以下のサイズではclickでドロップダウンとするナビゲーションメニューを作っています。
PCサイズ(1200px以上)の際にhoverで挙動する部分をjQueryで設定しましたが、その挙動がタブレットサイズ(1200px以下)でも活きてしまうので、タブレットサイズの時にはclickで挙動するようにしたい。
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
挙動自体はきちんと動くのですが、1回1回リロードをして読み込まないと、それぞれの挙動を失ってしまいます。
該当のソースコード
if (window.matchMedia("(min-width: 1200px)").matches) {
$(function () {
$(".dropdown-btn").hover(
function () {
$("ul:not(:animated)", this).slideDown();
},
function () {
$("ul.dropdown", this).slideUp();
}
);
});
} else {
$(function () {
$(".dropdown-btn").on(
"click",
function () {
$("ul:not(:animated)", this).slideDown();
},
function () {
$("ul.dropdown", this).slideUp();
}
);
});
}
試したこと
以下のようにresizeを使ってみましたが、構文の書き方を理解できていないのか全く動かなくなってしまいます。
$(window).on('load resize',function(){
var winWidth = $(window).width();
if(winWidth < 1200){
$('.toggle').show();
$('.dropdown').hide();
} else{
$('.toggle').hide();
$('.dropdown').show();
}
});
$('.toggle').on('click',function(){
$(this).next('li').slideToggle();
$('.open').removeClass('open');
$('dropdown').next('li').slideUp();
operner =close;
});
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/19 12:41