1.0.0 • Published 8 years ago

mr-slides v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

mr-slides

Basic & flexible slideshow where the logic is in JS & the fun in CSS

How to use

Regular HTML/JS/CSS setup

<div
  class="mr-slides js-slideshow"
  data-mr-slides-current-idx="0"
  data-mr-slides-interval-delay="3000"
  data-mr-slides-nav="#unique-bullet-nav"
  data-mr-slides-ready-delay="500"
  data-mr-slides-slides=".mr-slides__slide">

  <div class="mr-slides__slide">
    <div class="mr-slides__slide__background"></div>
    <div class="mr-slides__slide__content">
      Slide A
    </div>
  </div>

  <div class="mr-slides__slide">
    <div class="mr-slides__slide__background"></div>
    <div class="mr-slides__slide__content">
      Slide B
    </div>
  </div>
</div>

<div id="unique-bullet-nav" class="bullet-nav">
  <ul class="bullet-nav__list">
    <li class="bullet-nav__item">
      <a href="#">
        go to a
      </a>
    </li>
    <li class="bullet-nav__item">
      <a href="#">
        go to b
      </a>
    </li>
  </ul>
</div>

Angular.js

There's an Angular.js port with the same approach.

Import src/ng/mr-slides, which exposes an mr-slides directive.

Basic usage

<div mr-slides="gallery.images"></div>

In which gallery.images is an array of strings that will get passed to mr-haraway directive.

Custom slides

You can override the default slide template by adding a <script type="text/ng-template"> tag with an id and then passing the same id as to mr-slides through the slide-template argument.

You can also externally control the current index from another controller by passing an reference or number through the current attribute.

<div ng-init="myExternalCounter = 0">

  <a ng-click="myExternalCounter = myExternalCounter - 1">Previous</a><br />
  Current: {{ myExternalCounter }}<br />
  <a ng-click="myExternalCounter = myExternalCounter + 1">Next</a>

  <script type="text/ng-template" id="my-slide">
    {{ slide.title }}
  </script>

  <div
    mr-slides="[ { title: 'Jan' }, { title: 'Piet' }, { title: 'Joris' }, { title: 'Korneel' } ]"
    slide-template="my-slide"
    current="myExternalCounter"
  ></div>
</div>

Events

On change an event is triggered on the slide elements.

/* @param {Object} state
 *
 * {
 *   current: boolean
 * }
 *
 */
$('.mr-slides__slide').on('mrSlides.stateChange', function(e, state) {
  if (state.current) {
    // This slide is now active
  } else {
    // This slide isn't active anymore
  }
});

Angular usage

See issue #1.

Dev

$ npm install
$ gulp
1.0.0

8 years ago

0.0.22

8 years ago

0.0.21

8 years ago

0.0.20

8 years ago

0.0.19

8 years ago

0.0.17

8 years ago

0.0.16

8 years ago