JAVASCRIPT -

Pagination.js 커스터마이징

  • -

Pagination.js 커스터마이징

안녕하세요. TriplexLab입니다. 

즐거운 주말 보내고 있으신가요?ㅎ 오늘은 jQuery 플러그인중에 Pagination.js 커스텀 마이징을 간단하게 해보왔습니다. 
모두 개시판 만들 때 기본적으로 pagination을 많이 쓰실 겁니다.

이것을 응용해서 more(더 보기) 기능으로 튜닝해 봤습니다. 

<div id="data-container"></div>
<div id="pagination-container"></div>

 

@-webkit-keyframes fadeInFromNone { 
  0% { display: none; opacity: 0; }
  100% { display: block; opacity: 1;}
}

@-moz-keyframes fadeInFromNone {
  0% { display: none; opacity: 0; }
  100% { display: block; opacity: 1; }
}

@-o-keyframes fadeInFromNone {
  0% { display: none; opacity: 0; }
  100% { display: block; opacity: 1;}
}

@keyframes fadeInFromNone {
  0% { display: none; opacity: 0; }
  100% { display: block; opacity: 1; }
}

.list.active {
  opacity: 0;
  display: none;
}

.list {
  display: block;
  -webkit-animation: fadeInFromNone 0.6s ease-out;
  -moz-animation: fadeInFromNone 0.6s ease-out;
  -o-animation: fadeInFromNone 0.6s ease-out;
  animation: fadeInFromNone 0.6s ease-out;
}

 

 $( document ).ready(function() {
            var currentIdx = 0, startIdx = 0, endIdx = 0, totalNum = 0;
            
            function simpleTemplating(data, pagination) {
                var html = '';
                    $.each(data, function(index, item){
                        html += '<div class="list"> '
                        html += '<a href="'+item['link']+'" target="_blank">'+ item['title'] +'</a>'
                        html += '</div>'
                    });
                return html;
            };

            function moreTemplat(endIdx, totalNum) {
                var template = '';
                template += '<div class="more">';
                template += '<span class="currentIdx"><a href="#0"> 더보기 </a></span>';
                template += '<span>'+endIdx+'/</span>'
                template += '<span>'+totalNum+'</span>'
                template += '</div>';
                return template;
            };

           $('#pagination-container').pagination({
                dataSource: 'https://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?',
                locator: 'items',
                showPrevious: false,
                showNext: false,
                pageSize: 5,
                ajax: {
                    beforeSend: function() {
                        $('#data-container').html('Loading data from flickr.com ...');
                    }
                },
                callback: function(data, pagination) {
                    currentIdx = pagination.pageSize;
                    var htmlTemplat = simpleTemplating(data, pagination);
                    $('#data-container').html(htmlTemplat);

                    $('.list').each(function(idx, item) {
                        if(idx + 1 > pagination.pageSize) $(this).addClass('active');
                    });

                    totalNum = $('.list').length;
                    $('#pagination-container').html(moreTemplat(currentIdx, totalNum));

                    $('#pagination-container').on('click', function(e) {
                        if(endIdx >= data.length) return false;
                        if(currentIdx > pagination.pageSize) {
                            startIdx = endIdx;
                        } else {
                            startIdx = pagination.pageSize;
                        }
                        endIdx = startIdx + pagination.pageSize;

                        $('.list').each(function(idx, item)  {
                            if (idx + 1 >= startIdx && idx < endIdx) {
                                $(this).removeClass('active');
                            }
                        });

                        currentIdx += pagination.pageSize;

                        $('#pagination-container').html(moreTemplat( endIdx, totalNum));

                        if(currentIdx >= totalNum) { // currentIdx의 개수보다 아이템의 개수가 작을 경우 (연속 더보기 클릭후 맨 마지막인 경우)
                            $('#pagination-container').html(moreTemplat(totalNum, totalNum));
                            return false;
                        }
                    });
                }
            });
});

pagination.js만 보면 물론 정말 쓴만한 플러그인 입니다.
다양한 옵션들을 제공하므로써 쉽게 게시판을 구현 할수 있습니다. 
저는 이것을 가지고, 커스터마이징 하므로써 더 쉽게 more(더보기) 기능을 만들어 봤습니다. 
필요하신분들을 하단에 파일 다운 받아서 사용 하세요. 

Pagination-Customizing.zip
0.01MB

 

pagination.js 커스터마이징 2번째 이야기가 궁금하신 분들은 아래링크 참고하세요👇👇

 

Pagination.js 커스터마이징2

Pagination.js 커스터마이징2 안녕하세요. TriplexLab입니다. 오늘은 지난 시간에 이어서  Pagination.js 커스텀 마이징에 관해서 작성 해보겠습니다. 지난번에 작성한 글입니다. 참고로 보시면 좋습니다.

triplexlab.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.