Jump to content

vatrikovsky

Newbie
  • Posts

    1
  • Joined

  • Last visited

Everything posted by vatrikovsky

  1. Делаю вертикально скроллящееся меню по типу вот этого: http://www.netpro.ru/?action=DABlank2 (откройте "Мы сделали"), только на javaScript + jQuery HTML: <div id="left_list"> <p class="project_number"><a href="#">007</a></p> <p class="project_number"><a href="#">012</a></p> ... <p class="project_number"><a href="#">186</a></p> </div> java script: $(document).ready(function(){ // При наведении на левый блок var winHeight = $(window).height(); var margin = $('#left_list').height() - winHeight; // движение при попадании курсора в области $('#left_list').unbind('mouseover').mouseover(function(e){ // top 1/3 if (e.pageY < (winHeight / 3)) { var speed = (winHeight / 6) / e.pageY; if (speed > 2) speed = 2; $('#direction').val('top'); } // bottom 1/3 if (e.pageY > 2 * (winHeight / 3)) { var speed = (e.pageY - ((2 / 3) * winHeight)) / (winHeight / 6) + 0.5; if (speed > 2) speed = 2; $('#direction').val('bottom'); } $('#speed').val(speed); var direction = $('#direction').val(); var speed = $('#speed').val(); // bottom 1/3, list moves top if (direction == 'bottom') { if (parseInt($('#left_list').css('margin-top')) > (-1) * margin) { $('#left_list').animate({marginTop: '-=50px'}, (300 / speed)); $('#int').val(parseInt($('#left_list').css('margin-top'))); } else { $('#left_list').animate({marginTop: '-' + margin + 'px'}, (300 / speed)); $('#int').val(parseInt($('#left_list').css('margin-top'))); } } // top 1/3, list moves bottom if (direction == 'top') { if ((parseInt($('#left_list').css('margin-top'))) < 0) { $('#left_list').animate({marginTop: '+=50px'}, (300 / speed)); $('#int').val(parseInt($('#left_list').css('margin-top'))); } else { $('#left_list').animate({marginTop: '0px'}, (300 / speed)); $('#int').val(parseInt($('#left_list').css('margin-top'))); } } // стопим, если увели мышь в середину if (direction == 'none') { $('#left_list').stop(); } }); // остановка при выведении указателя за пределы $('#left_list').unbind('mouseout').mouseout(function(){ $('#speed').val('0'); $('#direction').val('none'); $('#left_list').stop(); }); // увеличение номера при наведении $('#left_list > p.project_number').hover( function() { $(this).animate({fontSize: '10pt'}, 150); }, function(){ $(this).animate({fontSize: '8pt'}, 150); } ); ); Суть проблемы: Во всем, кроме ФайрФокса, блок прокручивается именно при движении мыши, а при простое на месте тоже останавливается. Надо, естественно, чтобы везде просто при поднесении мыши к краю списка, он бы скроллился. Пробовал сделать через setInterval, но это страшно тормозит скрипт, нет ли очевидного и грамотного способа реализовать это? Спасибо.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy