angusfretwell/parallax

View on GitHub
README.md

Summary

Maintainability
Test Coverage
Parallax
========

[![Travis](https://img.shields.io/travis/angusfretwell/parallax/master.svg)](https://travis-ci.org/angusfretwell/parallax)
[![Code Climate](https://img.shields.io/codeclimate/github/angusfretwell/parallax.svg)](https://codeclimate.com/github/angusfretwell/parallax)
[![Codecov](https://img.shields.io/codecov/c/github/angusfretwell/parallax.svg)](https://codecov.io/github/angusfretwell/parallax)
[![NPM Version](http://img.shields.io/npm/v/parallax-scroll.svg)](https://www.npmjs.org/package/parallax-scroll)
[![NPM Downloads](https://img.shields.io/npm/dm/parallax-scroll.svg)](https://www.npmjs.org/package/parallax-scroll)

Straight-forward parallax scrolling background images as an ES6 module.

Features
--------

* Easily import as an ES6 module
* Plain old JavaScript; no jQuery
* Simple as heck and really tiny
* Looks pretty cool

Usage
-----

1. Install Parallax with npm:

  ```sh
  npm install --save parallax-scroll
  ```

2. Import the `parallax` function:

  ```js
  import Parallax from 'parallax-scroll';
  ```

  Alternatively, an old-school `require()` will work:

  ```js
  var Parallax = require('parallax-scroll');
  ```

3. Create a new instance of `Parallax`, passing the constructor a selector, DOM element, or array of DOM elements, and optionally a hash of options, and then call the `animate()` function on the resulting object:

  ```js
  const parallax = new Parallax('.js-parallax', {
    speed: 0.2, // Anything over 0.5 looks silly
  });

  parallax.animate();
  ```

4. Write some markup for your parallax elements:

  ```html
  <div class="o-banner">
    <div class="o-banner__img js-parallax" style="background-image: url(path/to/some/img.jpg);"></div>
  </div>
  ```

5. As well as some structural CSS:

  ```css
  .o-banner {
    /**
     * You'll likely want to set a height for the elements, perhaps based on the
     * viewport as in this example
     */
    min-height: 70vh;
    position: relative;
  }

    .o-banner__img {
      position: absolute;
      width: 100%;
      left: 0;

      /**
       * Adjust the height (or width), and offset the element's position based
       * on the aspect of your images
       */
      height: 110%;
      top: -5%;

      background-position: center top;
      background-repeat: no-repeat;
      background-size: cover;

      transform: translate3d(0, 0, 0);
    }
  ```