Freebie: Paginación en CSS con jQuery

Kasper es un diseñador que a través de su sitio web, Design it & Code it, regala freebies o recursos webs para desarrolladores. Esta vez ha lanzado un paginador hecho en CSS y jQuery que realmente tiene un efecto muy interesante y que se puede usar tanto en proyectos personales como en comerciales.

Acá mismo se puede ver un ejemplo y el mismo código para que funcione. A continuación, en el resto del post, el código reproducido.

HTML

< !doctype html>


  
  Cart - Design it & Code it
  
  
  



  

  
  


CSS

html { background: #f5f5f5 url(img/bg.png); }
body {
  margin: 180px auto 0 auto;
  max-width: 500px;
  width: 100%;
}

a {
  -webkit-transition: all .2s linear;
  -moz-transition: all .2s linear;
  transition: all .2s linear;
}

@font-face {
  font-family: 'Edmondsans';
  src: url('fonts/edmondsans-bold-webfont.eot');
  src: url('fonts/edmondsans-bold-webfont.eot?#iefix') format('embedded-opentype'),
       url('fonts/edmondsans-bold-webfont.woff') format('woff'),
       url('fonts/edmondsans-bold-webfont.ttf') format('truetype'),
       url('fonts/edmondsans-bold-webfont.svg#EdmondsansBoldRegular') format('svg');
  font-weight: bold;
  font-style: normal;
}

/*
 * Custom style
 */
.pagination li {
  border-top-color: #282828;
  border-bottom-color: #282828;
}
.pagination li:before,
.pagination .active:after,
.pagination .active:before,
.pagination .active ~ li:before {
  border-left-color: #282828;
  border-right-color: #282828;
}
.pagination a {
  color: #888;
  font-family: "Edmondsans";
  font-size: 15px;
  font-weight: bold;
  text-decoration: none;
}
.pagination .active a { color: #ccc;  }
.pagination .disabled a,
.pagination .disabled:hover a { color: #333; cursor: default;  }
.pagination li:hover a { color: #c9282d; }

/*
 * Basic style
 */
.pagination { text-align: center; }
.pagination ul {
  display: inline-block;
  list-style-type: none;
  margin: 0;
  padding: 0;
  text-align: center;
}
.pagination li {
  border-right:10px solid transparent;
  border-bottom-width: 17px;
  border-top-width: 17px;
  border-style: solid;
  border-left: 0;
  height: 0;
  float: left;
  margin-right: 3px;
  position: relative;
}
.pagination li:before {
  border-bottom-color: transparent;
  border-left-color: transparent;
  border-top-color: transparent;
  border-width: 17px 10px 17px 0;
  border-style: solid;
  position: absolute;
  content: '';
  left: -10px;
  height: 0px;
  top: -17px;
  width: 0px;
}
.pagination .active ~ li:before {
  border-bottom-color: transparent;
  border-top-color: transparent;
  border-width: 17px 0 17px 10px;
  right: -10px;
  left: auto;
}
.pagination .active ~ li {
  border-left:10px solid transparent;
  border-right: 0;
}
.pagination .active  {
  border-right: 0;
  border-left: 0;
}
.pagination .active:after,
.pagination .active:before {
  border-bottom-color: transparent;
  border-top-color: transparent;
  border-width: 17px 10px 17px 0;
  border-style: solid;
  position: absolute;
  content: '';
  height: 0px;
  width: 0px;
  top: -17px;
  left: -10px;
}
.pagination .active:after {
  border-bottom-color: transparent;
  border-right-color: transparent;
  border-top-color: transparent;
  border-width: 17px 0 17px 10px;
  right: -10px;
  left: auto;
}
.pagination a {
  line-height: 36px;
  margin-top: -17px;
  display: block;
  height: 34px;
  width: 30px;
}
.pagination .prev {
  -webkit-border-radius: 20px 0 0 20px;
  -moz-border-radius: 20px 0 0 20px;
  border-radius: 20px 0 0 20px;
}
.pagination .next {
  -webkit-border-radius: 0 20px 20px 0;
  -moz-border-radius: 0 20px 20px 0;
  border-radius: 0 20px 20px 0;
  border-right: 0;
}
.pagination .prev a,
.pagination .next a {
  text-indent: -4px;
  line-height: 38px;
  font-size: 30px;
}
.pagination .prev a { text-indent: 4px; }
.pagination .prev:before,
.pagination .next:before { content: none; }

JavaScript

/* Pagination by @Idered | http://designitcodeit.com/i/14 */
;(function ( $, window, document, undefined ) {

  $('.pagination li').on('click', function(event) {
    event.preventDefault();
    var $this = $(this),
        $pagination = $this.parent(),
        $pages = $pagination.children(),
        $active = $pagination.find('.active');

    if($this.hasClass('prev')) {
      if ($pages.index($active) > 1) {
        $active.removeClass('active').prev().addClass('active');
      }
    } else if($this.hasClass('next')) {
      if ($pages.index($active) < $pages.length - 2) {
        $active.removeClass('active').next().addClass('active');
      }
    } else {
      $this.addClass('active').siblings().removeClass('active');
    }

    $active = $pagination.find('.active');

    $('.prev')[$pages.index($active) == 1 ? 'addClass' : 'removeClass']('disabled');
    $('.next')[$pages.index($active) == $pages.length - 2 ? 'addClass' : 'removeClass']('disabled');

  });

  $('.pagination li:eq(1)').trigger('click');

})( jQuery, window, document );

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.