Шаг 204.
Библиотека jQuery.
Прокрутка и перемещение. Прокрутка заголовков. Окончательная версия

    На этом шаге мы приведем окончательную версию приложения.

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

$(document).ready(function() {
  $('#news-feed').each(function() {
    var $container = $(this);
    $container.empty();

    var fadeHeight = $container.height() / 4;
    for (var yPos = 0; yPos < fadeHeight; yPos += 2) {
      $('<div></div>').css({
        opacity: yPos / fadeHeight,
        top: $container.height() - fadeHeight + yPos
      }).addClass('fade-slice').appendTo($container);
    }

    var $loadingIndicator = $('<img/>')
      .attr({
        'src': 'images/loading.gif', 
        'alt': 'Загрузка. Подождите, пожалуйста.'
      })
      .addClass('news-wait')
      .appendTo($container);

    $.get('../cgi-bin/feed.php', function(data) {
      $loadingIndicator.remove();
      $('rss item', data).each(function() {
        var $link = $('<a></a>')
          .attr('href', $('link', this).text())
          .text($('title', this).text());
        var $headline = $('<h4></h4>').append($link);

        var pubDate = new Date($('pubDate', this).text());
        var pubMonth = pubDate.getMonth() + 1;
        var pubDay = pubDate.getDate(); 
        var pubYear = pubDate.getFullYear();
        var $publication = $('<div></div>')
          .addClass('publication-date')
          .text(pubMonth + '/' + pubDay + '/' + pubYear);
    
        var $summary = $('<div></div>')
          .addClass('summary')
          .html($('description', this).text());
        
        $('<div></div>')
          .addClass('headline')
          .append($headline, $publication, $summary)
          .appendTo($container);
      });

      var currentHeadline = 0, oldHeadline = 0;
      var hiddenPosition = $container.height() + 10;
      $('div.headline').eq(currentHeadline).css('top', 0);
      var headlineCount = $('div.headline').length;
      var pause;
      var rotateInProgress = false;

      var headlineRotate = function() {
        if (!rotateInProgress) {
          rotateInProgress = true;
          pause = false;
          currentHeadline = (oldHeadline + 1)
            % headlineCount;
          $('div.headline').eq(oldHeadline).animate(
            {top: -hiddenPosition}, 'slow', function() {
              $(this).css('top', hiddenPosition);
            });
          $('div.headline').eq(currentHeadline).animate(
            {top: 0}, 'slow', function() {
              rotateInProgress = false;
              if (!pause) {
                pause = setTimeout(headlineRotate, 5000);
              }
            });
          oldHeadline = currentHeadline;
        }
      };
      if (!pause) {
        pause = setTimeout(headlineRotate, 5000);
      }
      
      $container.hover(function() {
        clearTimeout(pause);
        pause = false;
      }, function() {
        if (!pause) {
          pause = setTimeout(headlineRotate, 250);
        }
      });
    });
  });
});

Рис.1. Окончательная версия

Полный текст этого примера можно взять здесь.


   К сожалению, на момент публикации этого шага, нам не удалось запустить приведенный здесь скрипт. В тексте самого скрипта ошибок нет. Похоже, что на хостинге действительно запрещено использование функции file_get_contents() языка РНР, а библиотека cURL не установлена. Мы работаем над устранением этой проблемы.

    Со следующего шага мы начнем рассматривать карусель изображений.




Предыдущий шаг Содержание Следующий шаг