2016-12-20 6 views
1

Привет, я использую следующие jquery и css, чтобы навести мое навигационное меню на верхнюю часть прокрутки. Проблема в том, что мое навигационное меню находится под 100vh div. jQuery не принимает vh как меру высоты. Любые предложения о том, как сделать это vh?Создание липкой навигации

$(function(){ 
 
     $(window).scroll(function() { 
 
      if ($(this).scrollTop() >= 290) { 
 
       $('nav.stickynav').addClass('stickytop'); 
 
      } 
 
      else { 
 
       $('nav.stickynav').removeClass('stickytop'); 
 
      } 
 
     }); 
 
    });
.stickynav.stickytop { 
 
     position:fixed; 
 
     top:0 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<header class="group"> 
 
    \t <img src="<?php echo get_bloginfo('template_directory');?>/img/es.png"> 
 
    \t <nav class="stickynav"><?php wp_nav_menu(array('theme_location' => 'primary')); ?></nav> 
 
    </header>

+0

Ну, вы всегда можете рассчитать значение *** px ***, если вам действительно нужно чтобы использовать размер видового экрана для этого: *** 1 vh = 1/100th высоты окна просмотра. *** и *** $ (window) .height() *** даст вам окно просмотра браузеров. – Esko

+0

'100vh' эквивалентно высоте окна. Попробуйте заменить свой '290' на' $ (window) .height() ' –

ответ

-1

Это код для заголовка наклейкой на моем сайте .. Надеюсь, что это помогает

$(function() { 
 
    /* Sticky Header */ 
 
    $(window).scroll(function(){ 
 
    var sticky = $('.header'), 
 
    scroll = $(window).scrollTop(); 
 
    if (scroll >= 100){ 
 
     sticky.addClass('fixed'); 
 
     sticky.fadeIn(); 
 
    } else { 
 
     sticky.removeClass('fixed'); 
 
     sticky.removeAttr("style"); 
 
    } 
 
    }); 
 
});
/* Header */ 
 

 
header.header { 
 
    background: #000; 
 
    padding: 1em; 
 
    box-sizing: border-box; 
 
} 
 

 
header.header.fixed { 
 
    position: fixed; 
 
    width: 100%; 
 
    display:none; 
 
    top: 0px; 
 
    left: 0px; 
 
    z-index: 202; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<header class="header"> 
 
    <div class="container"> 
 
    <nav class="main-menu" id="mm"> 
 
     <ul> 
 
     <li><a href="#" title="#">Home</a></li> 
 
     </ul> 
 
    </nav> 
 
    </div> 
 
</header>

+0

. Если вы используете эту технику, то при выполнении прокрутки плохое выполнение и может вызвать завиток. Чтобы повысить производительность, вы можете использовать [requestAnimationFrame] (https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame). – MateBoy

+0

@mateBoy Я не заметил каких-либо проблем с производительностью .. но ценю ваш вклад, я рассмотрю предложенную вами технику. :) – Dominion79

0

css недавно введено положение: липкое; Я думаю, что это будет полезно для вашего сайта, так как вам не нужно использовать какой-либо javascript, чтобы заставить его работать. Но из-за того, насколько он новый, он не будет работать на всех браузерах и не работать с не обновленными браузерами (многие используют старые браузеры)