Создание расширяющегося DIV/Canvas с горизонтальной прокруткой с помощью JavaScript для колеса

Хорошо, вот что я пытаюсь сделать. Я искал в Интернете интересную временную шкалу, которую я могу купить - позволяя уменьшать масштаб, публиковать на ней события и так далее. Однако все примеры, которые я нашел, либо слишком дороги, либо просто бесполезны.

Итак, я решил создать свой собственный, но есть два элемента, с которыми у меня проблемы.

1) Преобразование колесика прокрутки в прокрутку влево-вправо (поэтому не вверх-вниз). Я не могу найти легкий и быстрый способ сделать это.

Но, что более важно..

2) Мне нужна область, на которой я буду показывать временную шкалу, чтобы она автоматически расширялась при прокрутке. Так что, если я прокручиваю вниз, он добавит "эквивалентную" область справа и вниз слева. Так что я думал, как сделать iFrame (уже использую их), и когда вы прокручиваете его, он просто добавляет больше "временной шкалы" слева или справа, загружает все, что ему нужно для загрузки из БД / списка событий, и так далее, до бесконечности, таким образом создавая постоянно расширяющийся список блоков, которые имеют размер времени.

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

1 ответ

В основном вам нужен сценарий горизонтальной бесконечной прокрутки.

Возьмите этот плагин, который я написал:

 $.fn.hScroll = function( options )
 {
  function scroll( obj, e )
  {
    var evt = e.originalEvent;
    var direction = evt.detail ? evt.detail * (-120) : evt.wheelDelta;

    if( direction > 0)
    {
        direction =  $(obj).scrollLeft() - 120;
    }
    else
    {
        direction = $(obj).scrollLeft() + 120;
    }

    $(obj).scrollLeft( direction );

    e.preventDefault();
  }

  $(this).width( $(this).find('div').width() );

  $(this).bind('DOMMouseScroll mousewheel', function( e )
  {
      scroll( this, e );
  });
}

Инициализируйте его с помощью:

  $('body').hScroll();

Делает ваш сайт горизонтально прокручиваемым.

Div с содержимым должен быть шире, чем ваше тело (например, 3000 пикселей).

Что касается эффекта бесконечной прокрутки, вы в значительной степени должны делать это самостоятельно, потому что я не могу знать, какие данные вы вводите. Но я объясню.

Ваши дочерние элементы в div содержимого должны быть перемещены влево. (каждый новый добавленный div не будет переходить на новую строку).

Установите интервал, чтобы проверять, находится ли позиция scrollLeft у пользователя ближе к концу контента (точно так же, как pinterest и аналогичный сайт).

    function loadNewData(){ /* Your search for data and update here. */ }
    setInterval('loadNewData', 500);

искать новые данные в соответствии с вашими последними с помощью AJAX. Когда вы получаете новые данные, добавьте их в свой div содержимого (в div, который перемещается влево, как я писал ранее) и отметьте его как последний элемент.

Возможно, вы могли бы использовать свой идентификатор, чтобы отметить последний элемент в этом div.

   <div data-id="467" class="item"> // your data here  </div>

Вы можете получить его с помощью

   $('.item:last').attr('data-id');

с jQuery.

Другие вопросы по тегам