2013-11-20 4 views
6

У меня есть страница, которая довольно длинная, и в меню макета есть всплывающее меню. Я бы хотел, чтобы эта часть выпадающего меню отображалась в верхней части страницы, даже когда пользователь прокручивал панель меню вне поля зрения. Вот HTML для менюjQuery позиция DIV, зафиксированная сверху на прокрутке

<div id="task_flyout"> 
     <div id="info">Compare up to 3 cards side-by-side. Click “Add to Compare” next to any card to get started…</div> 
     <div id="card1" class="card"> 
      <div class="cardimage"></div><div class="cardname"><a href="#"></a></div><div class="remove"><a href="#"><img src="images/remove.png" alt="remove card" width="12" height="12" border="0" /></a></div> 
     </div> 
     <div id="card2" class="card"> 
      <div class="cardimage"></div><div class="cardname"><a href="#"></a></div><div class="remove"><a href="#"><img src="images/remove.png" alt="remove card" width="12" height="12" border="0" /></a></div> 
     </div> 
     <div id="card3" class="card"> 
      <div class="cardimage"></div><div class="cardname"><a href="#"></a></div><div class="remove"><a href="#"><img src="images/remove.png" alt="remove card" width="12" height="12" border="0" /></a></div> 
     </div> 
     <div id="compare"><a href="comparecards.php">Compare Now</a></div> 
    </div> 
    <div id="task_arrow"></div> 
</div> 

А вот сценарий. Я блокирую навигационную панель «.frozen_top» в верхней части окна браузера на прокрутке (это работает до сих пор), но, кроме того, я хотел бы изменить положение CSS на «#task_flyout» после того, как этот бар заблокирует.

$(window).scroll(function(){ 
if($(document).width() > 900) { 
    $(".frozen_top").css("top",Math.max(130,$(this).scrollTop())); 
    if($(this).scrollTop() > 135) { 
     $(".frozen_top").css("margin-top","-95px"); 
        $("#task_flyout").css("top","53px");  
    } else { 
     $(".frozen_top").css("margin-top","-5px"); 
        $("#task_flyout").css("top","33px");  
    } 
} 

}); 
+0

У вас больше шансов получить помощь по этому вопросу, если вы создадите автономный пример в JSFiddle, а также подробно расскажите о том, что конкретно вы не можете получить. – Nate

ответ

45

вместо того, чтобы делать это так, почему бы не просто сделать плавающем position:fixed, top:0; left:0; раз ваше окно прокрутил пройти определенную высоту:

JQuery

$(window).scroll(function(){ 
     if ($(this).scrollTop() > 135) { 
      $('#task_flyout').addClass('fixed'); 
     } else { 
      $('#task_flyout').removeClass('fixed'); 
     } 
    }); 

Css

.fixed {position:fixed; top:0; left:0;} 

Example

+0

Спасибо, я даже об этом не думал. Я попробую. –

+0

Отлично! Его действительно удивительный –

+0

Любой способ, чтобы эта остановка в определенный момент при прокрутке вниз? –

Смежные вопросы