# [enquire.js](http://wickynilliams.github.com/enquire.js/) - Awesome Media Queries in JavaScript

[![Build Status](https://travis-ci.org/WickyNilliams/enquire.js.svg)](https://travis-ci.org/WickyNilliams/enquire.js)

`enquire.js` is a lightweight, pure javascript library (with **no dependencies**) for programmatically responding to media queries.

## Getting enquire.js

### Download

Get the latest build, ready to go:

 * [Development](https://github.com/WickyNilliams/enquire.js/raw/master/dist/enquire.js) - unminified
 * [Production](https://github.com/WickyNilliams/enquire.js/raw/master/dist/enquire.min.js) - minified

### Install via Bower

To install via bower, enter the following at the command line:

    bower install enquire

### Install via npm

To install via npm, enter the following at the command line:

    npm install enquire.js

### Build From Source

If you want build from source (and run all unit tests etc):

    git clone git://github.com/WickyNilliams/enquire.js.git
    cd enquire.js
    npm install
    grunt

Booya!

## Quick Start

The main method you will be dealing with is `register`. It's basic signature is as follows:

```javascript
enquire.register(query /* string */, handler /* object || array  || function */);
```

`query` is the CSS media query you wish to respond to, and `handler` is an object containing any logic to handle the query. An example of usage is as follows:

```javascript
enquire.register("screen and (max-width:1000px)", {

    match : function() {},      // OPTIONAL
                                // If supplied, triggered when the media query transitions
                                // *from an unmatched to a matched state*

    unmatch : function() {},    // OPTIONAL
                                // If supplied, triggered when the media query transitions
                                // *from a matched state to an unmatched state*.
                                // Also may be called when handler is unregistered (if destroy is not available)

    setup : function() {},      // OPTIONAL
                                // If supplied, triggered once immediately upon registration of the handler

    destroy : function() {},    // OPTIONAL
                                // If supplied, triggered when handler is unregistered. Place cleanup code here

    deferSetup : true           // OPTIONAL, defaults to false
                                // If set to true, defers execution the setup function
                                // until the media query is first matched. still triggered just once
});
```

This should be enough to get you going, but **please read the full [enquire.js documentation](http://wickynilliams.github.com/enquire.js/)** if you wish to learn about the other cool features.

## Contributing

* Got an awesome idea?
* Found a *not-so*-awesome bug?
* Wish to get my attention through an inappropriate communication channel?!

Then please don't hesitate to raise an issue, they will *all* be looked at and tended to.

And for all the cool cats who are prepared to give their time to contribute code, feel free to open a pull request. If you could write unit tests to accompany your pull request that would be pretty sweet, but no worries if not - if it's good enough to be merged in, it's good enough for me to spend a little time to write tests on your behalf :-)

## License

License: MIT (http://www.opensource.org/licenses/mit-license.php)