2017-02-21 48 views
1

Я новичок в Javascript и потратил около трех часов на поиски помощи по этому поводу, и я не могу найти ничего, что характерно для меня.Javascript if/else statement на размер экрана

Я проектирую скользящую навигацию, которая при просмотре на рабочем столе наложения навигации скользит слева на 100% ширины экрана. Но когда на планшете/мобильном устройстве он сдвигается сверху вниз на 100% от высоты устройства.

Большое вам спасибо!

 /* Open Nav */ 
 
    function openNav() { 
 
    \t \t 
 
    \t if (screen.width >= 768) { 
 
     document.getElementById("myNav").style.width = "100%"; 
 
    \t } else { 
 
    \t document.getElementById("myNav").style.height = "100%"; \t 
 
    \t } 
 
    } 
 
    
 
    
 
    \t 
 
    /* Close Nav */ 
 
    function closeNav() { 
 
    \t \t 
 
    \t if (screen.width >= 768) { 
 
     document.getElementById("myNav").style.width = "0%"; 
 
    \t } else { 
 
    \t document.getElementById("myNav").style.height = "0%"; 
 
    \t } 
 
    }
 /****************************** OVERLAY MENU START ***********************/ 
 
    
 
    .overlay { 
 
     /* Height & width depends on how you want to reveal the overlay (see JS below) */ 
 
     height: 100%; 
 
    \t min-height: 500px; 
 
    \t width: 100%; 
 
     position: fixed; /* Stay in place */ 
 
     z-index: 1000; /* Sit on top */ 
 
     left: 0; 
 
    \t top: 0; 
 
     background-color: #000000; 
 
     overflow-x: hidden; /* Disable horizontal scroll */ 
 
     transition: 0.4s; /* 0.5 second transition effect to slide in or slide down the overlay (height or width, depending on reveal) */ 
 
    } 
 
    
 
    /* Position the content inside the overlay */ 
 
    .overlay-content { 
 
     width: 100%; /* 100% width */ 
 
    \t margin-left:auto; 
 
    \t margin-right:auto; 
 
     text-align: center; /* Centered text/links */ 
 
    } 
 
    
 
    /* The navigation links inside the overlay */ 
 
    .overlay a { 
 
     padding: 22px; 
 
    \t font-family: 'gothammedium', Arial, sans-serif; 
 
     text-decoration: none; 
 
     font-size: 16px; 
 
    \t text-transform:uppercase; 
 
    \t letter-spacing: 3px; 
 
     color: #ffffff; 
 
     display: block; /* Display block instead of inline */ 
 
     transition: 0.3s; /* Transition effects on hover (color) */ 
 
    \t text-align:center; 
 
    } 
 
    
 
    /* When you mouse over the navigation links, change their color */ 
 
    .overlay a:hover, .overlay a:focus { 
 
     color: #292929; 
 
    \t text-decoration:none; 
 
    \t transition: 0.3s; /* Transition effects on hover (color) */ 
 
    } 
 
    
 
    /* Position the logo (top) */ 
 
    .overlay a.logo img { 
 
    \t position: absolute; 
 
    \t top: 0; 
 
    \t left: 0; 
 
    \t right: 0; 
 
    \t margin-top:45px; 
 
    \t margin-left:auto; 
 
    \t margin-right:auto; 
 
    \t width: 35px; 
 
    \t height: 40px; 
 
    } 
 
    
 
    /* Position the close button (bottom) */ 
 
    .overlay a.closebtn img { 
 
     position: absolute; 
 
    \t bottom: 0; 
 
    \t left:0; 
 
    \t right:0; 
 
    \t margin-bottom: 50px; 
 
    \t margin-left:auto; 
 
    \t margin-right:auto; 
 
    \t width: 25px; 
 
    \t height: 25px; 
 
    } 
 
    
 
    .overlay .main_menu { 
 
    \t position:absolute; 
 
    \t top:30%; 
 
    \t bottom: 70%; 
 
    \t left:0; 
 
    \t right:0; 
 
    \t display:block; 
 
    \t margin-left:auto; 
 
    \t margin-right:auto; 
 
    \t white-space: nowrap; 
 
    } 
 
    
 
    .menu_link { 
 
    \t text-align:center; 
 
    \t 
 
    } 
 
    
 
    .current_page { 
 
    \t white-space: nowrap; 
 
    \t color: #292929 !important; 
 
    \t text-decoration:none; 
 
    } 
 
    
 
    /****************************** OVERLAY MENU FINISH ***********************/
<div id="btns"> 
 
<button onClick="openNav();">Open</button> 
 
</div> 
 
<!-- Overlay content --> 
 
     <div id="myNav" class="overlay" style="width:0px;"> 
 
       <div class="overlay-content"> 
 
         <a class="logo"><img src="images/logo.png" alt="logo"></a> 
 
          
 
          <!--Website Menu--> 
 
          <div class="main_menu"> 
 
           <a class="menu_link current_page" href="#">work</a> 
 
           <a class="menu_link" href="#">about</a> 
 
           <a class="menu_link" href="#">contact</a> 
 
          </div>  
 
          <!--Website Menu End--> 
 
          
 
         <a href="javascript:void(0)" class="closebtn" onclick="closeNav()"> 
 
         <img src="images/burger-nav-close.png" alt="burger-nav"></a> 
 
       </div> 
 
     </div> 
 
     <!--Overlay End-->

Я думаю, что это весь код, который вам нужно будет. Дайте мне знать, если вам нужно больше :) Еще раз спасибо!

+1

Вы запускаете этот код в любом месте? –

+0

Вы должны обновлять как 'width', так и' height' во всех ваших случаях. В настоящее время вы обновляете только тот, который, по вашему мнению, имеет значение, но бывают случаи, которые не охватываются этим. –

+0

И что вы ожидаете? Только горизонтальное скольжение на обоих? –

ответ

0

Вы должны использовать аннотацию @media в CSS.

@media only screen and (max-width: 768px) { 
    /*For mobile phones*/ 
    #myNav { 
     width: 100%; 
    } 
} 
+0

Так что я бы не использовал javascript вообще? –

+0

вы можете сделать это также css, но вы хотите использовать java-script, вы должны получить высоту и ширину устройства, а затем применить его при закрытии и открытии функции. –

+1

Мне жаль, что я не слежу, поэтому я бы поставил высоту в своем Javascript? Я очень смущен. Я добавил код, который вы предоставили в мой CSS, но он не работает, когда мой сайт находится на мобильном устройстве, навигационная навигация по-прежнему раздвигается сбоку (как это должно быть на рабочем столе.), А не вниз. Моя навигация прекрасно работает на рабочем столе, а не на мобильных устройствах. –