2013-11-11 7 views
1

У меня есть разные divs и menuebar, которые составляют LI-элементы.Если в окне просмотра; изменить цвет границы

Названия div: # сначала # 4.

Если один из DIV (или больше) есть/находится в окне просмотра, я хочу изменить цвет нижней границы для li-элемента, который ссылается на этот DIV.

Например: Если DIV # третье находится в видовом экране, третий элемент LI (# nav3) должен изменить его нижнюю границу на зеленый. Если он покинет окно просмотра, он должен снова измениться на белый.

  • Только что время DIV находится в окне просмотра. Как только он покинет область просмотра, я хочу отменить изменение цвета.

Я попробовал его с JQuery Viewport: http://www.appelsiini.net/projects/viewport

Моя проблема в том, что я не могу понять, как использовать этот селектор - Я знаю, что это основной материал, но я действительно не могу понять это.

$("#third:in-viewport").each(function() { 
    $("#nav1, #nav2, #nav4").animate({ borderBottomColor: '#fff' },800); 
    $("#nav3").animate({ borderBottomColor: 'green' },800); 
}); 

Было бы здорово, если бы кто-нибудь мог мне помочь в этом. Большое спасибо!

+0

использовать $ ("# NAV1 # NAV2 # nav4 "). animimate ({borderBottomColor: '#fff'}, 800); удалить запятая между # nav1, # nav2, # nav4. – SanketS

+0

Как насчет этого? http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport/7557433#7557433 Обратите внимание, что когда вы находитесь вне элемента из окна просмотра (потому что событие), вы также можете просто скрыть его и проверить, видно ли это. – nkmol

+1

@SanketS Это не сработает, потому что 'nav1',' nav2' и 'nav4' не являются дочерними. – putvande

ответ

0

Я хотел бы добавить класс к вашим DIVs, что-то вроде:

<div id="first" class="item"> // Your code <div> 
<div id="second" class="item"> // Your code <div> 
<div id="third" class="item"> // Your code <div> 
<div id="fourth" class="item"> // Your code <div> 

А потом что-то вроде этого в JQuery, чтобы выделить ссылки:

$(".item:in-viewport").each(function() { 
    var item_id = $(this).attr("id"); 
    // In viewport 
    $("a[href=#" + item_id +"]").animate({ borderBottomColor: 'green' },800);  
    // Not in viewport 
    $("a").not("a[href=#" + item_id +"]").animate({ borderBottomColor: '#fff' },800); 
}); 
+0

Спасибо, $ ("#" + item_id) .animate ({borderBottomColor: 'green'}, 800); относится к DIV, который находится в самом окне просмотра - мне нужно будет получить доступ к LI-элементу, который является «аналогом» этого DIV. Я могу изменить идентификаторы LI на «navfirst», «navsecond» и т. Д., А затем $ («# nav» + item_id) .animate ({borderBottomColor: 'green'}, 800); но есть ли лучшее решение? Спасибо! – user1658080

+0

Да, мое плохое! Я отредактировал его. Думаю, это сработает. – Teknotica

+0

Спасибо, но как я могу заставить остальные, которые не являются inviewport, исчезнуть? – user1658080

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