Я хочу подражать заголовку Google+ с помощью панели поиска. Когда вы прокрутите вниз, он перейдет к top:-60px
, а второе горизонтальное меню будет top:0
от top:60px
и станет основным верхним горизонтальным меню, а одно с top:-60px
останется скрытым, пока мы не прокрутим вверх.скорость прокрутки с помощью плагина jQuery для мыши mutex
Мне это удалось, но оно работает только при медленном прокрутке (с трекпадом, OSX, Chrome33). Я исследовал и выяснил, что скорость прокрутки зависит от аппаратного обеспечения (тачпад, мышь), ОС и даже от браузера. Я нашел плагин mousewheel, цель которого - сделать скорость прокрутки равной, но я не могу заставить ее работать.
Вот код JS: (Дельта дивизии я получил здесь: https://stackoverflow.com/a/16696129)
<script type="text/javascript">
gn_top_menu_featured = $('.gn-top-menu-featured'),
gn_top_menu = $('.gn-top-menu'),
hide_gn_top_menu_featured = 0,
gn_top_menu_position = 44;
$('body').on('mousewheel', function(event) {
if(event.deltaX >= 40)
event.deltaX /= 40;
if(event.deltaY >= 40)
event.deltaY /= 40;
var sy = $('body').scrollTop();
if (sy >= hide_gn_top_menu_featured && sy <= gn_top_menu_position) {
gn_top_menu_featured.css('top', -sy);
gn_top_menu.css('top', gn_top_menu_position-sy);
}
else {
// whatever
}
});
</script>
Я действительно хочу, чтобы получить эту работу должным образом, спасибо заранее. :)
Позвольте мне объяснить это еще раз. Оба моих горизонтальных меню - «позиция: фиксированная». 1-е место в верхней части: 0, второе в верхней части: 44. Когда пользователь прокручивает вверх/вниз, верхнее меню «верхнее» значение будет обновляться по одному. После того, как первый с исходным значением 'top: 0' достигает' top: -44', а второй с исходным значением 'top: 44' достигает' top: 0', оценка вернет false и DOM-манипуляция закончен. Пока пользователь не прокрутится. Когда я прокручиваю слишком быстро, это промахивается. Это из-за слишком большой «дельта» трекпадов, и я не могу ее решить. – tsm