2017-04-12 21 views
0

私はウェブサイトを構築しているので、HTMLとJSを使用するいくつかのカスタムメニューがあります。私は変更しようとしている....私はJavaScriptのメディアが応答しない応答

var mq = window.matchMedia("(min-width: 1023px)"); 

if (mq.matches) { 
    function opensideNav() { 
     document.getElementById("mySidenav").style.width = "25%"; 
    } 
    //Closes Right sidenav 
    function closesideNav() { 
     document.getElementById("mySidenav").style.width = "0"; 
    } 
} else { 
    function opensideNav() { 
     document.getElementById("mySidenav").style.width = "100%"; 
    } 
    //Closes Right sidenav 
    function closesideNav() { 
     document.getElementById("mySidenav").style.width = "0"; 
    } 
} 

は、それが唯一の1023よりも小さい画面上のメニューを開きます使用している場合

function opensideNav() { 
    document.getElementById("mySidenav").style.width = "25%"; 
} 
//Closes Right sidenav 
function closesideNav() { 
    document.getElementById("mySidenav").style.width = "0"; 
} 

:メニューが開いているときには、画面の25%最大から最小の問題ですが、依然として同じ問題です。 Pls help :)

答えて

0

これはCSSのメディアクエリを使用しないのはなぜですか?あなたが行うことができます:オンとオフopenクラスを切り替えますあなたのJavaScriptで

function toggleNav() { 
    document.getElementById("mySidenav").classList.toggle("open"); 
} 

を、これはあなたがメニューを切り替えるにはクリックしているが何であれに添付する必要があります。

次に、あなたのCSSにあなたが行うことができます:

#mySidenav { 
    width: 0; 
} 

#mySidenav.open { 
    width: 100%; 
} 

@media screen and (min-width: 1023px) { 
    #mySidenav.open { 
     width: 25%; 
    } 
} 

それでは、これがやっていることは、クリックするとJSでの機能は上とmySidenav要素のオフopenクラスをトグルされています。デフォルトでCSSはmySidenavwidth0とし、openクラスが適用されたときのCSSの変更を上書きします。また、これはビューポートの幅を調べ、適用される幅がそれに基づいて変化するかどうかを変更します。あなたがmin-widthを誤解

<button onclick="toggleNav()">Menu</button> 
0

が開いているのナビゲーションボタンのようなものになります。 min-widthは、メディアクエリのコンテキストでは、ビューポートの最小値がwidthの場合に適用されることを意味します。ただし、デバイスのwidthでクエリを実行する予定であるため、min-widthmax-widthは本当に目的には役立ちません。ビューポートの幅ではなく、デバイスのwidthを照会するには、それぞれmin-device-widthmax-device-widthを使用する必要があります。

関連する問題