• Главная»
  • Уроки»
  • jQuery»
  • Постраничная навигация для содержания с использованием jQuery

Постраничная навигация для содержания с использованием jQuery

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

demosourse

 

Разметка HTML

В разметке должны содержаться элементы, которые станут основой навигации:

<!DOCTYPE html>
<html lang="ru" >
	<head>
		<meta charset="utf-8" />
		<title>Постраничная навигация на jQuery | Материалы сайта RUSELLER.COM</title>
		
		<link rel="stylesheet" href="css/main.css" type="text/css" />
		<script src="js/jquery.min.js"></script>
		<script src="js/main.js"></script>
	</head>
 <body>
	<div class="example">
		<h2>Заголовок</h2>
		<div id="content" class="content">
			. . . Содержание . . .
		</div>
		<hr />
		<div class="pagination">
			<ul>
				<li><a href="#" id="prev" class="prevnext">« Туда</a></li>
				<li><a href="#" id="next" class="prevnext">Сюда »</a></li>
			</ul>
			<br />
			<div id="page_number" class="page_number">1</div>
		</div>
	</div>
</body>
</html>

 

CSS

body{background:#eee;margin:0;padding:0}
.example{background:#FFF;width:800px;border:1px #000 solid;margin:20px auto;padding:15px;-moz-border-radius: 3px;-webkit-border-radius: 3px}

#content {
    position:relative;
    height:400px;
}
#content .page {
    position:absolute;
    top:0px;
}
.pagination{
    padding: 2px;
}
.pagination ul{
    margin: 0;
    padding: 0;
    text-align: left;
    font-size: 16px;
}
.pagination li{
    list-style-type: none;
    display: inline;
    padding-bottom: 1px;
}
.pagination a, .pagination a:visited{
    padding: 0 5px;
    border: 1px solid #9aafe5;
    text-decoration: none;
    color: #2e6ab1;
}
.pagination a:hover, .pagination a:active{
    border: 1px solid #2b66a5;
    color: #000;
    background-color: #FFFF80;
}
.pagination a.prevnext{
    font-weight: bold;
}
.page_number {
    border: 1px solid #9aafe5;
    color: #2e6ab1;
    padding:5px;
    text-align: center;
    width: 20px;
}

 

jQuery

Код представляет собой пример построения плагина для jQuery. При инициализации плагин принимает два параметра - высоту страницы и время переключения между страницами.

(function($){
    $.fn.extend({ 
        MyPagination: function(options) {
            var defaults = {
                height: 400,
                fadeSpeed: 400
            };
            var options = $.extend(defaults, options);

            // Создаем ссылку на объект
            var objContent = $(this);

            // Внутренние переменные
            var fullPages = new Array();
            var subPages = new Array();
            var height = 0;
            var lastPage = 1;
            var paginatePages;

            // Функция инициализации
            init = function() {
                objContent.children().each(function(i){
                    if (height + this.clientHeight > options.height) {
                        fullPages.push(subPages);
                        subPages = new Array();
                        height = 0;
                    }

                    height += this.clientHeight;
                    subPages.push(this);
                });

                if (height > 0) {
                    fullPages.push(subPages);
                }

                // Оборачиваем каждую полную страницу
                $(fullPages).wrap("<div class='page'></div>");

                // Скрываем все обернутые страницы
                objContent.children().hide();

                // Создаем коллекцию для навигации
                paginatePages = objContent.children();

                // Показываем первую страницу
                showPage(lastPage);

                // Выводим элементы управления
                showPagination($(paginatePages).length);
            };

            // Функция обновления счетчика
            updateCounter = function(i) {
                $('#page_number').html(i);
            };

            // Функция вывода страницы
            showPage = function(page) {
                i = page - 1; 
                if (paginatePages[i]) {

                    // Скрываем старую страницу, показываем новую
                    $(paginatePages[lastPage]).fadeOut(options.fadeSpeed);
                    lastPage = i;
                    $(paginatePages[lastPage]).fadeIn(options.fadeSpeed);

                    // и обновлем счетчик
                    updateCounter(page);
                }
            };

            // Функция вывода навигации (выводим номера страниц)
            showPagination = function(numPages) {
                var pagins = '';
                for (var i = 1; i <= numPages; i++) {
                    pagins += '<li><a href="#" onclick="showPage(' + i + '); return false;">' + i + '</a></li>';
                }
                $('.pagination li:first-child').after(pagins);
            };

            // Выполняем инициализацию
            init();

            // Привязываем два события - нажатие на кнопке "Предыдущая страница"
            $('.pagination #prev').click(function() {
                showPage(lastPage);
            });
            // и "Следующая страница"
            $('.pagination #next').click(function() {
                showPage(lastPage+2);
            });

        }
    });
})(jQuery);

// Инициализация при загрузке страницы
jQuery(window).load(function() {
    $('#content').MyPagination({height: 400, fadeSpeed: 400});
});

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.script-tutorials.com/creating-modern-jquery-pagination-for-content/
Перевел: Сергей Фастунов
Урок создан: 30 Июня 2012
Просмотров: 56567
Правила перепечатки


5 последних уроков рубрики "jQuery"

^ Наверх ^