2010-08-19 3 views
0

Я читал учебники из нескольких разных мест, таких как http://css-tricks.com/scrollfollow-sidebar/ или http://jqueryfordesigners.com/fixed-floating-elements/ и играл с ними, но, похоже, не понял, как бы я мог добавить больше, чем тот, скользящая коробка на странице. Есть предположения?Как сделать 2+ коробки слайдами

ответ

0

Мое предположение (из первой ссылки на пример) состоит в том, что вместо того, чтобы иметь только #sidebar, вы хотите иметь прокрутку еще одного элемента с окном (т. Е. Войти в детали пользователя).

Проще всего было бы добавить эту информацию в существующей прокрутке элемент:

<ul id="sidebar"> 
    <li id="user-details">Name: John Doe<br/>Email: [email protected]</li> 
    <!-- remaining links here --> 
</ul> 

Однако, если вы хотите, чтобы прокрутить два элемента с окном:

<ul id="sidebar"> 
    <!-- sidebar links --> 
</ul> 
<ul id="user-details"> 
    <!-- user details --> 
</ul> 

Было бы просто вопрос оживления обоих их маржинальных вершин внутри обработчика событий $(window).scroll():

Редактировать

следующие свитки код #sidebar до тех пор, пока не достигнет 2000px из свитка, на котором указывают он останавливается и прокручивается #user-details, пока он не достигнет 4000px из свитка:

// constants for the scrolling 
var offsetSidebar = $("#sidebar").offset(); 
var offsetUserDetails = $("#user-details").offset(); 

// on scroll of window 
$(window).scroll(function() { 
    scrollElement($("#sidebar"), offsetSidebar, 2000); 
    scrollElement($("#user-details"), offsetUserDetails, 4000); 
}); 

// handle the scrolling 
function scrollElement(elem, offset, boundary){ 
    var currOffset = elem.offset(); 
    if(currOffset.top < boundary && $(window).scrollTop() < boundary){ 
     if ($(window).scrollTop() > offset.top) { 
      elem.stop().animate({marginTop: $(window).scrollTop() - offset.top}); 
     } else { 
      elem.stop().animate({marginTop: 0}); 
     } 
    } 
} 

Вы можете увидеть его in action here.

+0

Прошу прощения, я догадываюсь, что я не объяснил это достаточно хорошо, что я хочу, чтобы одна коробка А следовала за вами, пока не дойдет до определенной точки. Теперь окно a остановилось, и окно B начнет следовать за вами, пока это не достигнет определенной точки. Теперь поле b остановлено, и окно c начнет следовать за вами и так далее и так далее. – Jacinto

+0

Это все еще достаточно просто. Вам просто нужно настроить граничные условия для всех ваших ящиков, чтобы проверить их на '$ (window) .scrollTop()'. Так, например, поле А будет следовать до '$ (window) .scrollTop()> 2000', поле будет следовать до' $ (window) .scrollTop()> 4000' и ​​т. Д. Я обновил свой пример, чтобы вы могли видеть что я имею в виду. – Pat

+0

Могу ли я сделать границу классом или идентификатором? – Jacinto

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