Skip to content

Repository files navigation

Slideout.js NPM versionBuild statusdevDependency status

A touch slideout navigation menu for your mobile web apps.

Features

  • Dependency-free.
  • Simple markup.
  • Native scrolling.
  • Easy customization.
  • CSS transforms & transitions.
  • Just 4 Kb!

Demo

Check out the demo to see it in action (on your mobile or emulate touches on your browser).

Slideout.js demo

Installation

$ npm install slideout
$ spm install slideout
$ bower install https://github.com/Mango/slideout.git
$ component install mango/slideout

Usage

Implementing Slideout.js into your project is easy.

First of all, you'll need to create your markup. You should have a menu (#menu) and a main content (#panel) into your body.

<navid="menu"><header><h2>Menu</h2></header></nav><mainid="panel"><header><h2>Panel</h2></header></main>

Add the Slideout.js styles (index.css) in your web application.

body {
width:100%;
height:100%;
}
.slideout-menu {
position: fixed;
left:0;
top:0;
bottom:0;
right:0;
z-index:0;
width:256px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
display: none;
}
.slideout-panel {
position:relative;
z-index:1;
}
.slideout-open,
.slideout-openbody,
.slideout-open .slideout-panel {
overflow: hidden;
}
.slideout-open .slideout-menu {
display: block;
}

Then you just include Slideout.js and create a new instace with some options:

<scriptsrc="dist/slideout.min.js"></script><script>varslideout=newSlideout({'panel': document.getElementById('panel'),'menu': document.getElementById('menu'),'padding': 256,'tolerance': 70});</script>

Full example

<!doctype html><htmllang="en"><head><metacharset="utf-8"><title>Slideout Demo</title><metahttp-equiv="cleartype" content="on"><metaname="MobileOptimized" content="320"><metaname="HandheldFriendly" content="True"><metaname="apple-mobile-web-app-capable" content="yes"><metaname="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"><style>body {
width:100%;
height:100%;
}
.slideout-menu {
position: fixed;
left:0;
top:0;
bottom:0;
right:0;
z-index:0;
width:256px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
display: none;
}
.slideout-panel {
position:relative;
z-index:1;
}
.slideout-open,
.slideout-openbody,
.slideout-open .slideout-panel {
overflow: hidden;
}
.slideout-open .slideout-menu {
display: block;
}
</style></head><body><navid="menu"><h2>Menu</h2></nav><mainid="panel"><header><button></button><h2>Panel</h2></header></main><scriptsrc="dist/slideout.min.js"></script><script>varslideout=newSlideout({'panel': document.getElementById('panel'),'menu': document.getElementById('menu'),'padding': 256,'tolerance': 70});</script></body></html>

Browser Support

  • Chrome (IOS, Android, desktop)
  • Firefox (Android, desktop)
  • Safari (IOS, Android, desktop)
  • Opera (desktop)
  • IE 10+ (desktop)

API

Slideout(options)

Create a new instance of Slideout.

  • options (Object) - Options to customize a new instance of Slideout.
  • options.panel (HTMLElement) - The DOM element that contains all your application content (.slideout-panel).
  • options.menu (HTMLElement) - The DOM element that contains your menu application (.slideout-menu).
  • [options.duration] (Number) - The time (milliseconds) to open/close the slideout. Default: 300.
  • [options.fx] (String) - The CSS effect to use when animating the opening and closing of the slideout. Default: ease.
  • [options.padding] (Number) - Default: 256.
  • [options.tolerance] (Number) - Default: 70.
varslideout=newSlideout({'panel': document.getElementById('main'),'menu': document.getElementById('menu'),'padding': 256,'tolerance': 70});

Slideout.open();

Opens the slideout menu.

slideout.open();

Slideout.close();

Closes the slideout menu.

slideout.close();

Slideout.toggle();

Toggles (open/close) the slideout menu.

slideout.toggle();

Slideout.isOpen();

Returns true if the slideout is currently open, and false if it is closed.

slideout.isOpen();// true or false

npm-scripts

$ npm run build
$ npm run dist
$ npm test
$ npm run hint

With ❤ by

License

MIT license. Copyright © 2015 Mango.

About

A touch slideout navigation menu for your mobile web apps.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages