Commit a0fec58f authored by Arkadiusz Kubaczkowski's avatar Arkadiusz Kubaczkowski
Browse files

initial commit

parents
No related merge requests found
Showing with 1073 additions and 0 deletions
+1073 -0
module.exports = (grunt) ->
grunt.initConfig
dirs:
coffeeDir: 'coffeescripts'
jsDir: 'bin/javascripts'
cssDir: 'bin/css'
testDir: 'tests'
pkg: grunt.file.readJSON('nanoscroller.jquery.json')
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy") %>\n' +
'<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n'
concat:
options:
banner: '<%= banner %>',
stripBanners: true
dist:
src: ['<%= dirs.jsDir %>/<%= pkg.name %>.js']
dest: '<%= dirs.jsDir %>/<%= pkg.name %>.js'
uglify:
options:
sourceMapIn: '<%= dirs.jsDir %>/<%= pkg.name %>.js.map'
sourceMap: '<%= dirs.jsDir %>/<%= pkg.name %>.min.js.map'
sourceMappingURL: '<%= pkg.name %>.min.js.map'
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
'(c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n'
build:
src: '<%= dirs.jsDir %>/<%= pkg.name %>.js'
dest: '<%= dirs.jsDir %>/<%= pkg.name %>.min.js'
sizediff:
all:
src:
['<%= dirs.jsDir %>/<%= pkg.name %>.js', '<%= dirs.jsDir %>/<%= pkg.name %>.min.js']
coffee:
nano:
options:
bare: true
sourceMap: true
files:
'<%= dirs.jsDir %>/<%= pkg.name %>.js': ['<%= dirs.coffeeDir %>/*.coffee']
tests:
files:
'<%= dirs.testDir %>/spec/nano-spec.js': ['<%= dirs.testDir %>/coffeescripts/*.coffee']
jasmine:
src: '<%= dirs.jsDir %>/<%= pkg.name %>.min.js'
options:
keepRunner: false
vendor: ['<%= dirs.testDir %>/lib/jquery.min.js', '<%= dirs.testDir %>/lib/jasmine-jquery.js']
specs: '<%= dirs.testDir %>/spec/**/*.js'
shell:
marked:
command: 'node_modules/marked/bin/marked README.md > bin/readme.html'
options:
stdout: true
yuidoc:
compile:
name: '<%= pkg.name %>'
description: '<%= pkg.description %>'
version: '<%= pkg.version %>'
url: '<%= pkg.homepage %>'
options:
paths: 'bin/javascripts'
outdir: 'docs/'
csslint:
options:
csslintrc: '.csslintrc'
src: ['<%= dirs.cssDir %>/nanoscroller.css']
connect:
server:
options:
port: 8888
watch:
src:
files: '<%= dirs.coffeeDir %>/*.coffee'
tasks: ['default']
grunt.loadNpmTasks 'grunt-contrib-concat'
grunt.loadNpmTasks 'grunt-contrib-uglify'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.loadNpmTasks 'grunt-sizediff'
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-shell'
grunt.loadNpmTasks 'grunt-contrib-yuidoc'
grunt.loadNpmTasks 'grunt-contrib-jasmine'
grunt.loadNpmTasks 'grunt-contrib-csslint'
grunt.loadNpmTasks 'grunt-contrib-connect'
grunt.registerTask 'default', ['coffee:nano', 'concat', 'uglify','csslint', 'sizediff', 'shell:marked']
grunt.registerTask 'build', ['default']
grunt.registerTask 'build:docs', ['yuidoc']
grunt.registerTask 'build:tests', ['coffee:tests']
grunt.registerTask 'test', ['coffee:tests', 'jasmine']
grunt.registerTask 'size', ['sizediff']
grunt.registerTask 'server', ['default', 'connect:server', 'watch']
Copyright (c) 2012 James Florentino
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
# nanoScroller.js [![NPM version][npm-image]][npm-url]
[nanoScroller.js](https://github.com/jamesflorentino/nanoScrollerJS) is a jQuery plugin that offers a simple way of implementing Mac OS X Lion-styled scrollbars for your website.
It uses minimal HTML markup being `.nano > .nano-content`. The other scrollbar div elements `.pane > .nano-slider` are added during run time to prevent clutter in templating. The latest version utilizes native scrolling and works with the iPad, iPhone, and some Android Tablets.
### Downloads
- [Production version](https://raw.github.com/jamesflorentino/nanoScrollerJS/master/bin/javascripts/jquery.nanoscroller.min.js)
- [Development version](https://raw.github.com/jamesflorentino/nanoScrollerJS/master/bin/javascripts/jquery.nanoscroller.js)
- [Default stylesheet](https://raw.github.com/jamesflorentino/nanoScrollerJS/master/bin/css/nanoscroller.css)
To start using, you need three basic things:
### 1. Markup
The following type of markup structure is needed to make the plugin work:
```html
<div id="about" class="nano">
<div class="nano-content"> ... content here ... </div>
</div>
```
Copy the HTML markup. Change `.nano` into something related to your content. Though you can also remove that attribute as long as you have a parent div with an ID reference. e.g. `#parent > .nano`. `nano` and `nano-content` classnames can be customized via plugin options (_in that case you must rename them inside the plugin's CSS file as well_).
### 2. CSS
Link to the `nanoscroller.css` file inside your page's `<head>` section (...or copy the contents from it to your page's main stylesheet file).
```html
<link rel="stylesheet" href="nanoscroller.css">
```
You should specify a width and a height to your container, and apply some custom styling for your scrollbar. Here's an example:
```css
.nano { background: #bba; width: 500px; height: 500px; }
.nano > .nano-content { padding: 10px; }
.nano > .nano-pane { background: #888; }
.nano > .nano-pane > .nano-slider { background: #111; }
```
### 3. JavaScript
Running this script will apply the nanoScroller plugin to all DOM elements with a `.nano` className.
```js
$(".nano").nanoScroller();
```
### Advanced methods
### scroll
To scroll at the top:
```js
$(".nano").nanoScroller({ scroll: 'top' });
```
To scroll at the bottom:
```js
$(".nano").nanoScroller({ scroll: 'bottom' });
```
To scroll at the top with an offset value:
```js
$(".nano").nanoScroller({ scrollTop: value });
```
To scroll at the bottom with an offset value:
```js
$(".nano").nanoScroller({ scrollBottom: value });
```
To scroll to an element:
```js
$(".nano").nanoScroller({ scrollTo: $('#a_node') });
```
#### stop:
To stop the operation. This option will tell the plugin to disable all event bindings and hide the gadget scrollbar from the UI.
```js
$(".nano").nanoScroller({ stop: true });
```
#### destroy:
Destroys nanoScroller and restores browser's native scrollbar.
```js
$(".nano").nanoScroller({ destroy: true });
```
#### flash:
To flash the scrollbar gadget for an amount of time defined in plugin settings (_defaults to 1,5s_). Useful if you want to show the user (e.g. on pageload) that there is more content waiting for him.
```js
$(".nano").nanoScroller({ flash: true });
```
#### nanoScroller();
Refresh the scrollbar. This simply re-calculates the position and height of the scrollbar gadget.
```js
$(".nano").nanoScroller();
```
### Custom events
#### 'scrollend'
A custom `'scrollend'` event is triggered on the element every time the user has scrolled to the end of the content element (does *not* get triggered more than once when user tries to scroll down and has already reached the end of scrollable content).
```js
$(".nano").bind("scrollend", function(e){
console.log("current HTMLDivElement", e.currentTarget);
});
```
Some browsers trigger this event more than once each time, so to listen to the custom event, instead of using jQuery's normal `.bind` or `.on`, you most likely want to use [this tiny jQuery debounce plugin](https://github.com/diaspora/jquery-debounce) to prevent browsers from firing your function more than once every 100ms.
```js
$(".nano").debounce("scrollend", function() {
alert("The end");
}, 100);
```
#### 'scrolltop'
Same as the `'scrollend'` event, but it is triggered every time the user has scrolled to the top of the content element.
#### 'update'
Same as the `'scrolltop'` and `'scrollend'` events, but it's triggered every time the user scrolls. It also carries a JavaScript object with the current position, the maximum height and the direction (`up` or `down`).
```js
$(".nano").on("update", function(event, values){
console.debug( values );
});
```
### Plugin Options
There are a few options that you can change when running nanoScroller, e.g. `$(".nano").nanoScroller({ paneClass: 'myclass' });`
#### iOSNativeScrolling
Set to true if you want to use native scrolling in iOS 5+. This will disable your custom nanoScroller scrollbar in iOS 5+ and use the native one instead. While the native iOS scrollbar usually works much better, [there could possibly be bugs](http://github.com/scottjehl/Device-Bugs/issues) in certain situations.
Notice that `.pane` and `.slider` elements are *not generated/added* for devices that support iOS native scrolling when `iOSNativeScrolling` option is enabled.
__Default:__ false
```js
$(".nano").nanoScroller({ iOSNativeScrolling: true });
```
#### sliderMinHeight
Sets the minimum height of the slider element.
__Default:__ 20
```js
$(".nano").nanoScroller({ sliderMinHeight: 40 });
```
#### sliderMaxHeight
Sets the maximum height of the slider element.
__Default:__ null
```js
$(".nano").nanoScroller({ sliderMaxHeight: 200 });
```
#### preventPageScrolling
Set to true to prevent page scrolling when top or bottom inside the content div is reached.
__Default:__ false
```js
$(".nano").nanoScroller({ preventPageScrolling: true });
```
#### disableResize
Set to true to disable the resize from nanoscroller. Useful if you want total control of the resize event. If you set this option to true remember to call the reset method so that the scroll don't have strange behavior.
__Default:__ false
```js
$(".nano").nanoScroller({ disableResize: true });
```
#### alwaysVisible
Set to true to stop the scrollbar from auto-hiding itself.
__Default:__ false
```js
$(".nano").nanoScroller({ alwaysVisible: true });
```
#### flashDelay:
Use this setting to specify the scrollbar hide delay in milliseconds if you have enabled the `flash` option.
```js
$(".nano").nanoScroller({ flashDelay: 1000 });
```
__Default:__ 1500
#### paneClass
A classname for scrollbar track element. If you change this setting, you also have to change it in the plugin's CSS file.
__Default:__ 'nano-pane'
```js
$(".nano").nanoScroller({ paneClass: 'scrollPane' });
```
#### sliderClass
A classname for scrollbar thumb element. If you change this setting, you also have to change it in the plugin's CSS file.
__Default:__ 'nano-slider'
```js
$(".nano").nanoScroller({ sliderClass: 'scrollSlider' });
```
#### contentClass
A classname for your content div. If you change this setting, you also have to change it in the plugin's CSS file.
__Default:__ 'nano-content'
```js
$(".nano").nanoScroller({ contentClass: 'sliderContent' });
```
#### enabledClass
A classname for scrollbar enabled mode. If you change this setting, you also have to change it in the plugin's CSS file.
__Default:__ 'has-scrollbar'
```js
$(".nano").nanoScroller({ enabledClass: '__enabled' });
```
#### flashedClass
A classname for scrollbar flashed mode. If you change this setting, you also have to change it in the plugin's CSS file.
__Default:__ 'flashed'
```js
$(".nano").nanoScroller({ flashedClass: '__flashed' });
```
#### activeClass
A classname for scrollbar active mode. If you change this setting, you also have to change it in the plugin's CSS file.
__Default:__ 'active'
```js
$(".nano").nanoScroller({ activeClass: '__active' });
```
#### tabIndex
Set the tab order of the scrollable content. Set to -1 to skip over the scrollable content when tabbing.
__Default:__ 0
```js
$(".nano").nanoScroller({ tabIndex: 0 });
```
## How it works
![Fig 1.](https://github.com/jamesflorentino/nanoScrollerJS/raw/master/fig1.png)
The plugin works by creating a scrollbar gadget (with pre-defined css for styling) and then subscribing the `.nano-content`'s scroll events to it. Mouse press and drag events are also subscribed to the `.nano-pane` and `.nano-pane > .nano-slider` to emulate the native scrollbar's mechanism. The system scrollbars are hidden from the viewport (Fig 1). By doing this, we still retain the natural scrolling experience provided by the OS.
We are still working on doing a horizontal scrolling feature. If you're interested in contributing to the project, you are free to fork it and create a pull request.
### Development
To build nanoScroller from source you need the following libraries installed:
* Node.js and npm: [homepage / download](http://nodejs.org/)
* Grunt: [homepage](http://gruntjs.com/) | `npm install -g grunt-cli`
#### How to build & contribute
1. Make sure that you have [Grunt](http://gruntjs.com/) installed.
2. In terminal move to nanoscroller folder and run `npm install` to install all dependencies.
3. Make all Javascript changes in Coffeescript file(s), CSS changes in CSS file(s).
4. run `grunt` to build nanoScroller
5. Make sure that all changes are valid and open a pull request.
#### How to run tests
1. You need to have [PhantomJS](http://phantomjs.org/) installed. On Mac OS X the easiest way is to install [Homebrew](http://mxcl.github.com/homebrew/) and run `brew install phantomjs`.
2. run `grunt test` in terminal
### Browser compatibility
__Tested desktop browsers:__
* IE7+
* Firefox 3+
* Chrome
* Safari 4+
* Opera 11.60+
__Mobile support:__
* iOS 5+ (iPhone, iPad and iPod Touch)
* iOS 4 (*with a polyfill*)
* Android Firefox
* Android 2.2/2.3 native browser (*with a polyfill*)
* Android Opera 11.6 (*with a polyfill*)
* If you see it's broken on other tablets and mobile devices, please file a ticket in the git repo. Along with model name, and OS of the device.
If you find a bug, please report here at the [issues section](https://github.com/jamesflorentino/nanoScrollerJS/issues).
### Using a polyfill for better mobile browser support
You can use [overthrow.js](https://github.com/filamentgroup/Overthrow/) polyfill (~1.5kb minified and gzipped) to make nanoScroller work on many mobile devices. It emulates CSS overflow (overflow: auto;/overflow: scroll;) in devices that are lacking it.
To use overthrow, link to the javascript file in your HTML document...
```html
<script src="overthrow.js"></script>
```
...and add an `overthrow` class to your `content` div.
```html
<div id="about" class="nano">
<div class="overthrow nano-content"> ... content here ... </div>
</div>
```
### Contributors
- [jamesflorentino](https://github.com/jamesflorentino)
- [kristerkari](https://github.com/kristerkari)
Other people who have contributed code:
- [weareoutman](https://github.com/weareoutman) #170
- [Sailias](https://github.com/Sailias) #138
- [antonpinchuk](https://github.com/antonpinchuk) #123
- [miljan-aleksic](https://github.com/miljan-aleksic) #144
- [callmevlad](https://github.com/callmevlad) #122
- [bobo76](https://github.com/bobo76) #115
- [mente](https://github.com/mente) #110
- [livskiy](https://github.com/livskiy) #83
- [iStefo](https://github.com/iStefo) #65
- [tahajahangir](https://github.com/tahajahangir) #60
- [n0valyfe](https://github.com/n0valyfe) #57
- [johanbaath](https://github.com/johanbaath) #42
- [marcelombc](https://github.com/marcelombc) #40, #46
- [zacstewart](https://github.com/zacstewart) #30
- [michael-lefebvre](https://github.com/michael-lefebvre) #22, #29
- [AlicanC](https://github.com/AlicanC) #28
- [camerond](https://github.com/camerond) #26
- [jesstelford](https://github.com/jesstelford) #23
- [lluchs](https://github.com/lluchs) #7, #8
- [Dlom](https://github.com/Dlom)
### Credits
- Initially written by [James Florentino](http://jamesflorentino.com) in [CoffeeScript](http://coffeescript.org)
- Released under [MIT License](http://www.opensource.org/licenses/mit-license.php)
[npm-url]: https://npmjs.org/package/nanoscroller
[npm-image]: http://img.shields.io/npm/v/nanoscroller.svg
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Jasmine Spec Runner</title>
<link rel="stylesheet" type="text/css" href=".grunt/grunt-contrib-jasmine/jasmine.css">
<script src="./.grunt/grunt-contrib-jasmine/jasmine.js"></script>
<script src="./.grunt/grunt-contrib-jasmine/jasmine-html.js"></script>
<script src="./tests/lib/jquery.min.js"></script>
<script src="./tests/lib/jasmine-jquery.js"></script>
<script src="./bin/javascripts/jquery.nanoscroller.min.js"></script>
<script src="./tests/spec/nano-spec.js"></script>
<script src="./.grunt/grunt-contrib-jasmine/reporter.js"></script>
<script src="./.grunt/grunt-contrib-jasmine/jasmine-helper.js"></script>
</head>
<body>
</body>
</html>
* {
background: none;
border: 0;
font-weight: normal;
margin: 0;
padding: 0;
}
body {
background: black url(../images/bg.png);
font-family: 'Maven Pro', sans-serif;
color: #111;
}
h1 {
background: url(../images/h1.png) no-repeat;
height: 43px;
margin: 80px auto 20px;
position: relative;
text-indent: -9999px;
width: 500px;
}
h3 {
color: #111;
font-size: 24px;
margin: 10px 0 5px;
}
h4 {
color: #111;
font-size: 20px;
margin: 10px 0;
}
p {
color: #222;
font-size: 14px;
line-height: 20px;
margin-bottom: 10px;
}
b {
background: rgba(1,1,1,.1);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
display: inline-block;
padding: 1px 3px 1px 3px;
}
pre {
background: black;
border-radius: 5px;
color: #ee8;
display: block;
font-family: 'Monaco', 'Anonymous Pro', sans-serif;
font-size: 11px;
margin-top: 2px;
margin-bottom: 5px;
padding: 15px;
}
#main {
background: #bba;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
border-top: 1px rgba(255,255,255,.6) solid;
height: 500px;
width: 500px;
margin: auto;
}
#main .nano {
text-shadow: #eee 0 1px;
}
#main pre {
background: #222;
border-bottom: 1px solid white;
border-top: 1px solid black;
-webkit-box-shadow: black 0 1px 10px inset;
-moz-box-shadow: black 0 1px 10px inset;
box-shadow: black 0 1px 10px inset;
text-shadow: black 0 -1px 1px;
}
#main ul, #main ol {
display: block;
margin: 10px 0;
}
#main ul li, #main ol li {
margin-left: 20px;
font-size: 13px;
}
#main .nano-content h1 {
display: block;
margin: 0;
padding: 0;
color: #111;
text-indent: 0;
background: none;
display: none;
}
#main a {
color: #066;
text-decoration: none;
text-shadow: none;
}
#main a:hover {
text-decoration: underline;
}
#main code {
font-family: 'Monaco', 'Anonymous Pro', sans-serif;
}
#main p code {
background: #222;
display: inline-block;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
font-family: Monaco, 'Anonymous Pro';
font-size: 11px;
text-shadow: none;
color: #ee8;
padding: 0 3px 0;
border-bottom: 1px solid #eee;
-webkit-box-shadow: #000 0 2px 3px inset;
-moz-box-shadow: #000 0 2px 3px inset;
box-shadow: #000 0 2px 3px inset;
text-shadow: black 0 -1px 1px;
}
.small.nano {
background: #ffa;
height: 100px;
margin-top: 10px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
/** initial setup **/
.nano {
position : relative;
width : 100%;
height : 100%;
overflow : hidden;
}
.nano > .nano-content {
position : absolute;
overflow : scroll;
overflow-x : hidden;
top : 0;
right : 0;
bottom : 0;
left : 0;
}
.nano > .nano-content:focus {
outline: thin dotted;
}
.nano > .nano-content::-webkit-scrollbar {
display: none;
}
.has-scrollbar > .nano-content::-webkit-scrollbar {
display: block;
}
.nano > .nano-pane {
background : rgba(0,0,0,.25);
position : absolute;
width : 10px;
right : 0;
top : 0;
bottom : 0;
visibility : hidden\9; /* Target only IE7 and IE8 with this hack */
opacity : .01;
-webkit-transition : .2s;
-moz-transition : .2s;
-o-transition : .2s;
transition : .2s;
-moz-border-radius : 5px;
-webkit-border-radius : 5px;
border-radius : 5px;
}
.nano > .nano-pane > .nano-slider {
background: #444;
background: rgba(0,0,0,.5);
position : relative;
margin : 0 1px;
-moz-border-radius : 3px;
-webkit-border-radius : 3px;
border-radius : 3px;
}
.nano:hover > .nano-pane, .nano-pane.active, .nano-pane.flashed {
visibility : visible\9; /* Target only IE7 and IE8 with this hack */
opacity : 0.99;
}
//
// nanoScrollerJS
// --------------------------------------------------
/** initial setup **/
@nanoClass: ~'nano';
@paneClass: ~'nano-pane';
@sliderClass: ~'nano-slider';
@contentClass: ~'nano-content';
.@{nanoClass} {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
> .@{contentClass} {
position: absolute;
overflow: scroll;
overflow-x: hidden;
top: 0;
right: 0;
bottom: 0;
left: 0;
&:focus {
outline: thin dotted;
}
&::-webkit-scrollbar {
display: none;
}
}
> .@{paneClass} {
background: rgba(0,0,0,.25);
position:absolute;
width:10px;
right:0;
top:0;
bottom:0;
/* Target only IE7 and IE8 with this hack */
visibility:hidden\9;
opacity: .01;
-webkit-transition: .2s;
-moz-transition: .2s;
-o-transition: .2s;
transition: .2s;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
> .@{sliderClass} {
background: #444;
background: rgba(0,0,0,.5);
position: relative;
margin : 0 1px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
}
}
.@{nanoClass}:hover > .@{paneClass},
.@{paneClass}.active,
.@{paneClass}.flashed {
/* Target only IE7 and IE8 with this hack */
visibility: visible\9;
opacity: 0.99;
}
.has-scrollbar > .@{contentClass}::-webkit-scrollbar {
display: block;
}
//
// nanoScrollerJS (Sass)
// --------------------------------------------------
/** initial setup **/
$nanoClass: "nano" !default;
$paneClass: "nano-pane" !default;
$sliderClass: "nano-slider" !default;
$contentClass: "nano-content" !default;
.#{$nanoClass} {
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
.#{$contentClass} {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: scroll;
overflow-x: hidden;
&:focus {
outline: thin dotted;
}
&::-webkit-scrollbar {
display: none;
}
}
> .#{$paneClass} {
width: 10px;
background: rgba(0,0,0,.25);
position: absolute;
top: 0;
right: 0;
bottom: 0;
-webkit-transition: .2s;
-moz-transition: .2s;
-o-transition: .2s;
transition: .2s;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
visibility: hidden\9; // Target only IE7 and IE8 with this hack
opacity: .01;
> .#{$sliderClass} {
background: #444;
background: rgba(0,0,0,.5);
position: relative;
margin: 0 1px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
}
}
.has-scrollbar > .#{$contentClass}::-webkit-scrollbar {
display: block;
}
.#{$paneClass} {
.#{$nanoClass}:hover > &,
&.active,
&.flashed {
visibility: visible\9; // Target only IE7 and IE8 with this hack
opacity: 0.99;
}
}
.nano .nano-content {
padding: 20px;
}
.nano .nano-pane {
background: #555;
width: 8px;
right: 1px;
margin: 5px;
}
.nano .nano-slider {
background: #111;
}
<!DOCTYPE html>
<html>
<title>nanoScroller.js</title>
<meta property="og:title" content="nanoScroller.js - An easy-to-use jQuery scrollbar that looks like Lion's."/>
<meta property="og:url" content="http://jamesflorentino.com/jquery.nanoscroller/"/>
<meta property="og:image" content="http://jamesflorentino.com/jquery.nanoscroller/fb.png"/>
<meta property="og:description" content="nanoScroller.js is a jQuery plugin that offers a simple way of implementing non-distracting scrollbars for your website. It also respects html markup and uses only two layers for scrolling content. It is aimed at providing scrollbar solutions for dynamic content such as from ajax's.
"/>
<link rel="stylesheet" href="css/style.css" />
<link href='http://fonts.googleapis.com/css?family=Maven+Pro' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Anonymous+Pro' rel='stylesheet' type='text/css'>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="javascripts/jquery.nanoscroller.js"></script>
<script type="text/javascript" src="javascripts/main.js"></script>
<h1>nanoScroller.js</h1>
<div id="main">
<div class="nano">
<div class="nano-content"><p>Content Here!</p></div>
</div>
</div>
<a href="https://github.com/jamesflorentino/nanoScrollerJS"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://a248.e.akamai.net/assets.github.com/img/30f550e0d38ceb6ef5b81500c64d970b7fb0f028/687474703a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6f72616e67655f6666373630302e706e67" alt="Fork me on GitHub"></a>
<!-- stub/filler data -->
<script type="text/template" id="stub">
<h2>What's nanoScroller.js?</h2>
<p>nanoScroller.js is a small jQuery plugin for easily adding Lion-styled scrollbars.</p>
<ul>
<li>In order to start using it, there are 3 things
</ul>
<h2>1. Mark up</h2>
<pre>
&lt;div id=&quot;about&quot; class=&quot;nano&quot;&gt;
&lt;div class=&quot;content&quot;&gt; ...content... &lt;/div&gt;
&lt;/div&gt;
</pre>
<ul>
<li>Use this HTML template. You can change the value of `id` if you want.
</ul>
<h2>2. CSS</h2>
<pre>
@import url('nanoscroller.css');
.nano .nano-content { padding: 10px; }
.nano .nano-pane { background: #444; }
.nano .nano-pane .nano-slider { background: #111; }
</pre>
<ul>
<li><a href="css/nanoscroller.css">nanoscroller.css</a>
</ul>
<h2>3. JavaScript</h2>
<pre>
$("#about.nano").nanoScroller();
</pre>
<ul>
<li><a href="javascripts/jquery.nanoscroller.min.js">jquery.nanoscroller.min.js</a>
</ul>
<h2>Other methods</h2>
<ul>
<li>To scroll at the top
</ul>
<pre>
$("#about.nano").nanoScroller({scroll:'top'});
</pre>
<ul>
<li>To scroll at the bottom
</ul>
<pre>
$("#about.nano").nanoScroller({scroll:'bottom'});
</pre>
<ul>
<li>Refresh the scrollbar, just call the plugin again.
</ul>
<pre>
$("#about.nano").nanoScroller();
</pre>
<ul>
<li>To stop the scrollbar
</ul>
<pre>
$("#about.nano").nanoScroller({stop: true});
</pre>
<h2>Features</h2>
<ul class="dots">
<li>Currently works in IE8+, FireFox, Chrome, Safari
<li>For IE7 and below, it will fallback to the native scrollbar gadget of the OS.
<li>Works with popular multi-touch mobile and tablet devices. But still not error free.
<li>The current version v.02 weighs 3.65KB. I have yet to optimize the code. If you write CoffeeScript, feel free to Fork the project.
</ul>
<footer>
<h2>Credits</h2>
<ul>
<li>Written by: <a href="http://jamesflorentino.com">James Florentino</a> in <a href="http://coffeescript.org" target="_blank">CoffeeScript</a>
<li>License: <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank"> MIT License</a>
<li>Last updated: Dec 8, 2011
</ul>
</footer>
</script>
bin/images/bg.png

15.4 KB

bin/images/gh-ribbon.png

6.69 KB

bin/images/h1.png

6.78 KB

<!DOCTYPE html>
<html>
<head>
<title>nanoScroller.js</title>
<meta property="og:title" content="nanoScroller.js - A jQuery plugin that offers a simplistic way of implementing scrollbars."/>
<meta property="og:url" content="http://jamesflorentino.com/jquery.nanoscroller/"/>
<meta property="og:image" content="http://jamesflorentino.com/jquery.nanoscroller/fb.png"/>
<meta property="og:description" content="nanoScroller.js is a jQuery plugin that offers a simple way of implementing non-distracting scrollbars for your website. It also respects html markup and uses only two layers for scrolling content. It is aimed at providing scrollbar solutions for dynamic content such as from ajax's."/>
<link rel="stylesheet" href="css/nanoscroller.css">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/style.css">
<link href='http://fonts.googleapis.com/css?family=Maven+Pro' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Anonymous+Pro' rel='stylesheet' type='text/css'>
</head>
<body>
<h1>nanoScroller.js</h1>
<div id="main">
<div class="nano">
<div class="overthrow nano-content description"><p></p></div>
</div>
</div>
<a href="https://github.com/jamesflorentino/nanoScrollerJS"><img style="position: absolute; top: 0; right: 30px; border: 0;" src="images/gh-ribbon.png" alt="Fork me on GitHub"></a>
<script type="text/javascript" src="javascripts/overthrow.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="javascripts/jquery.nanoscroller.js"></script>
<script type="text/javascript" src="javascripts/main.js"></script>
<script type="text/javascript" src="javascripts/ga.js"></script>
</body>
</html>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-6984974-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
This diff is collapsed.
This diff is collapsed.
/*! nanoScrollerJS - v0.8.8 - (c) 2017 James Florentino; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery"],function(b){return a(b,window,document)}):"object"==typeof exports?module.exports=a(require("jquery"),window,document):a(jQuery,window,document)}(function(a,b,c){"use strict";var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;w={paneClass:"nano-pane",sliderClass:"nano-slider",contentClass:"nano-content",enabledClass:"has-scrollbar",flashedClass:"flashed",activeClass:"active",iOSNativeScrolling:!1,preventPageScrolling:!1,disableResize:!1,alwaysVisible:!1,flashDelay:1500,sliderMinHeight:20,sliderMaxHeight:null,documentContext:null,windowContext:null},r="scroll",j="mousedown",k="mouseenter",l="mousemove",n="mousewheel",m="mouseup",q="resize",h="drag",i="enter",t="up",p="panedown",f="DOMMouseScroll",g="down",u="wheel",s="touchmove",d="Microsoft Internet Explorer"===b.navigator.appName&&/msie 7./i.test(b.navigator.appVersion)&&b.ActiveXObject,e=null,A=b.requestAnimationFrame,v=b.cancelAnimationFrame,C=c.createElement("div").style,E=function(){var a,b,c,d;for(b=["t","webkitT","MozT","msT","OT"],a=c=0,d=b.length;c<d;a=++c)if(b[a],b[a]+"ransform"in C)return b[a].substr(0,b[a].length-1);return!1}(),D=function(a){return!1!==E&&(""===E?a:E+a.charAt(0).toUpperCase()+a.substr(1))},B=D("transform"),y=!1!==B,x=function(){var a,b,d;return a=c.createElement("div"),b=a.style,b.position="absolute",b.width="100px",b.height="100px",b.overflow=r,a.className="scrollbar-test",b.top="-9999px",c.body.appendChild(a),d=a.offsetWidth-a.clientWidth,c.body.removeChild(a),d},z=function(){var a,c,d;return c=b.navigator.userAgent,!!(a=/(?=.+Mac OS X)(?=.+Firefox)/.test(c))&&(d=/Firefox\/\d{2}\./.exec(c),d&&(d=d[0].replace(/\D+/g,"")),a&&+d>23)},o=function(){function o(d,f){this.el=d,this.options=f,e||(e=x()),this.$el=a(this.el),this.doc=a(this.options.documentContext||c),this.win=a(this.options.windowContext||b),this.body=this.doc.find("body"),this.$content=this.$el.children("."+this.options.contentClass),this.$content.attr("tabindex",this.options.tabIndex||0),this.content=this.$content[0],this.previousPosition=0,this.options.iOSNativeScrolling&&null!=this.el.style.WebkitOverflowScrolling?this.nativeScrolling():this.generate(),this.createEvents(),this.addEvents(),this.reset()}return o.prototype.preventScrolling=function(a,b){if(this.isActive)if(a.type===f)(b===g&&a.originalEvent.detail>0||b===t&&a.originalEvent.detail<0)&&a.preventDefault();else if(a.type===n){if(!a.originalEvent||!a.originalEvent.wheelDelta)return;(b===g&&a.originalEvent.wheelDelta<0||b===t&&a.originalEvent.wheelDelta>0)&&a.preventDefault()}},o.prototype.nativeScrolling=function(){this.$content.css({WebkitOverflowScrolling:"touch"}),this.iOSNativeScrolling=!0,this.isActive=!0},o.prototype.updateScrollValues=function(){var a,b;a=this.content,this.maxScrollTop=a.scrollHeight-a.clientHeight,this.prevScrollTop=this.contentScrollTop||0,this.contentScrollTop=a.scrollTop,b=this.contentScrollTop>this.previousPosition?"down":this.contentScrollTop<this.previousPosition?"up":"same",this.previousPosition=this.contentScrollTop,"same"!==b&&this.$el.trigger("update",{position:this.contentScrollTop,maximum:this.maxScrollTop,direction:b}),this.iOSNativeScrolling||(this.maxSliderTop=this.paneHeight-this.sliderHeight,this.sliderTop=0===this.maxScrollTop?0:this.contentScrollTop*this.maxSliderTop/this.maxScrollTop)},o.prototype.setOnScrollStyles=function(){var a;y?(a={},a[B]="translate(0, "+this.sliderTop+"px)"):a={top:this.sliderTop},A?(v&&this.scrollRAF&&v(this.scrollRAF),this.scrollRAF=A(function(b){return function(){return b.scrollRAF=null,b.slider.css(a)}}(this))):this.slider.css(a)},o.prototype.createEvents=function(){this.events={down:function(a){return function(b){return a.isBeingDragged=!0,a.offsetY=b.pageY-a.slider.offset().top,a.slider.is(b.target)||(a.offsetY=0),a.pane.addClass(a.options.activeClass),a.doc.bind(l,a.events[h]).bind(m,a.events[t]),a.body.bind(k,a.events[i]),!1}}(this),drag:function(a){return function(b){return a.sliderY=b.pageY-a.$el.offset().top-a.paneTop-(a.offsetY||.5*a.sliderHeight),a.scroll(),a.contentScrollTop>=a.maxScrollTop&&a.prevScrollTop!==a.maxScrollTop?a.$el.trigger("scrollend"):0===a.contentScrollTop&&0!==a.prevScrollTop&&a.$el.trigger("scrolltop"),!1}}(this),up:function(a){return function(b){return a.isBeingDragged=!1,a.pane.removeClass(a.options.activeClass),a.doc.unbind(l,a.events[h]).unbind(m,a.events[t]),a.body.unbind(k,a.events[i]),!1}}(this),resize:function(a){return function(b){a.reset()}}(this),panedown:function(a){return function(b){return a.sliderY=(b.offsetY||b.originalEvent.layerY)-.5*a.sliderHeight,a.scroll(),a.events.down(b),!1}}(this),scroll:function(a){return function(b){a.updateScrollValues(),a.isBeingDragged||(a.iOSNativeScrolling||(a.sliderY=a.sliderTop,a.setOnScrollStyles()),null!=b&&(a.contentScrollTop>=a.maxScrollTop?(a.options.preventPageScrolling&&a.preventScrolling(b,g),a.prevScrollTop!==a.maxScrollTop&&a.$el.trigger("scrollend")):0===a.contentScrollTop&&(a.options.preventPageScrolling&&a.preventScrolling(b,t),0!==a.prevScrollTop&&a.$el.trigger("scrolltop"))))}}(this),wheel:function(a){return function(b){var c;if(null!=b)return c=b.delta||b.wheelDelta||b.originalEvent&&b.originalEvent.wheelDelta||-b.detail||b.originalEvent&&-b.originalEvent.detail,c&&(a.sliderY+=-c/3),a.scroll(),!1}}(this),enter:function(a){return function(b){var c;if(a.isBeingDragged)return 1!==(b.buttons||b.which)?(c=a.events)[t].apply(c,arguments):void 0}}(this)}},o.prototype.addEvents=function(){var a;this.removeEvents(),a=this.events,this.options.disableResize||this.win.bind(q,a[q]),this.iOSNativeScrolling||(this.slider.bind(j,a[g]),this.pane.bind(j,a[p]).bind(n+" "+f,a[u])),this.$content.bind(r+" "+n+" "+f+" "+s,a[r])},o.prototype.removeEvents=function(){var a;a=this.events,this.win.unbind(q,a[q]),this.iOSNativeScrolling||(this.slider.unbind(),this.pane.unbind()),this.$content.unbind(r+" "+n+" "+f+" "+s,a[r])},o.prototype.generate=function(){var a,c,d,f,g,h;return d=this.options,g=d.paneClass,h=d.sliderClass,d.contentClass,(f=this.$el.children("."+g)).length||f.children("."+h).length||this.$el.append('<div class="'+g+'"><div class="'+h+'" /></div>'),this.pane=this.$el.children("."+g),this.slider=this.pane.find("."+h),0===e&&z()?(c=b.getComputedStyle(this.content,null).getPropertyValue("padding-right").replace(/[^0-9.]+/g,""),a={right:-14,paddingRight:+c+14}):e&&(a={right:-e},this.$el.addClass(d.enabledClass)),null!=a&&this.$content.css(a),this},o.prototype.restore=function(){this.stopped=!1,this.iOSNativeScrolling||this.pane.show(),this.addEvents()},o.prototype.reset=function(){var a,b,c,f,g,h,i,j,k,l,m,n,o;return h=this.options,this.iOSNativeScrolling?void(this.contentHeight=this.content.scrollHeight):(this.$el.find("."+this.options.paneClass).length||this.generate().stop(),this.stopped&&this.restore(),a=this.content,f=a.style,g=f.overflowY,d&&this.$content.css({height:this.$content.height()}),b=a.scrollHeight+e,m=parseInt(this.$el.css("max-height"),10),m>0&&(this.$el.height(""),this.$el.height(a.scrollHeight>m?m:a.scrollHeight)),j=this.pane.outerHeight(!1),l=parseInt(this.pane.css("top"),10),i=parseInt(this.pane.css("bottom"),10),k=j+l+i,o=Math.round(k/b*j),o<this.options.sliderMinHeight?o=this.options.sliderMinHeight:null!=this.options.sliderMaxHeight&&o>this.options.sliderMaxHeight&&(o=this.options.sliderMaxHeight),g===r&&f.overflowX!==r&&(o+=e),this.maxSliderTop=k-o,this.contentHeight=b,this.paneHeight=j,this.paneOuterHeight=k,this.sliderHeight=o,this.paneTop=l,this.slider.height(o),this.events.scroll(),this.pane.show(),this.isActive=!0,a.scrollHeight===a.clientHeight||this.pane.outerHeight(!0)>=a.scrollHeight&&g!==r?(this.pane.hide(),this.isActive=!1,this.$el.removeClass(h.enabledClass)):this.el.clientHeight===a.scrollHeight&&g===r?this.slider.hide():(this.slider.show(),this.$el.addClass(h.enabledClass)),this.pane.css({opacity:this.options.alwaysVisible?1:"",visibility:this.options.alwaysVisible?"visible":""}),c=this.$content.css("position"),"static"!==c&&"relative"!==c||(n=parseInt(this.$content.css("right"),10))&&this.$content.css({right:"",marginRight:n}),this)},o.prototype.scroll=function(){if(this.isActive)return this.sliderY=Math.max(0,this.sliderY),this.sliderY=Math.min(this.maxSliderTop,this.sliderY),this.$content.scrollTop(this.maxScrollTop*this.sliderY/this.maxSliderTop),this.iOSNativeScrolling||(this.updateScrollValues(),this.setOnScrollStyles()),this},o.prototype.scrollBottom=function(a){if(this.isActive)return this.$content.scrollTop(this.contentHeight-this.$content.height()-a).trigger(n),this.stop().restore(),this},o.prototype.scrollTop=function(a){if(this.isActive)return this.$content.scrollTop(+a).trigger(n),this.stop().restore(),this},o.prototype.scrollTo=function(a){if(this.isActive)return this.scrollTop(this.$el.find(a).get(0).offsetTop),this},o.prototype.stop=function(){return v&&this.scrollRAF&&(v(this.scrollRAF),this.scrollRAF=null),this.stopped=!0,this.removeEvents(),this.iOSNativeScrolling||this.pane.hide(),this},o.prototype.destroy=function(){return this.stopped||this.stop(),!this.iOSNativeScrolling&&this.pane.length&&this.pane.remove(),d&&this.$content.height(""),this.$content.removeAttr("tabindex"),this.$el.hasClass(this.options.enabledClass)&&(this.$el.removeClass(this.options.enabledClass),this.$content.css({right:""})),this},o.prototype.flash=function(){if(!this.iOSNativeScrolling&&this.isActive)return this.reset(),this.pane.addClass(this.options.flashedClass),setTimeout(function(a){return function(){a.pane.removeClass(a.options.flashedClass)}}(this),this.options.flashDelay),this},o}(),a.fn.nanoScroller=function(b){return this.each(function(){var c,d;if((d=this.nanoscroller)||(c=a.extend({},w,b),this.nanoscroller=d=new o(this,c)),b&&"object"==typeof b){if(a.extend(d.options,b),null!=b.scrollBottom)return d.scrollBottom(b.scrollBottom);if(null!=b.scrollTop)return d.scrollTop(b.scrollTop);if(b.scrollTo)return d.scrollTo(b.scrollTo);if("bottom"===b.scroll)return d.scrollBottom(0);if("top"===b.scroll)return d.scrollTop(0);if(b.scroll&&b.scroll instanceof a)return d.scrollTo(b.scroll);if(b.stop)return d.stop();if(b.destroy)return d.destroy();if(b.flash)return d.flash()}return d.reset()})},a.fn.nanoScroller.Constructor=o});
//# sourceMappingURL=jquery.nanoscroller.min.js.map
\ No newline at end of file
{"version":3,"sources":["../../coffeescripts/jquery.nanoscroller.coffee"],"names":["define","amd","$","factory","window","document","exports","module","require","jQuery","BROWSER_IS_IE7","BROWSER_SCROLLBAR_WIDTH","DOMSCROLL","DOWN","DRAG","ENTER","MOUSEDOWN","MOUSEENTER","MOUSEMOVE","MOUSEUP","MOUSEWHEEL","NanoScroll","PANEDOWN","RESIZE","SCROLL","TOUCHMOVE","UP","WHEEL","cAF","defaults","getBrowserScrollbarWidth","hasTransform","isFFWithBuggyScrollbar","rAF","transform","_elementStyle","_prefixStyle","_vendor","windowContext","requestAnimationFrame","cancelAnimationFrame","createElement","style","vendors","_i","_len","i","length","substr","charAt","toUpperCase","outer","outerStyle","scrollbarWidth","position","width","height","overflow","className","top","body","appendChild","offsetWidth","clientWidth","removeChild","isOSXFF","ua","version","navigator","userAgent","test","exec","replace","el","options","this","$el","doc","documentContext","win","find","$content","children","contentClass","attr","tabIndex","content","previousPosition","iOSNativeScrolling","WebkitOverflowScrolling","nativeScrolling","generate","createEvents","reset","prototype","preventScrolling","e","direction","isActive","type","originalEvent","detail","preventDefault","wheelDelta","css","updateScrollValues","maxScrollTop","scrollHeight","clientHeight","prevScrollTop","contentScrollTop","scrollTop","trigger","maximum","maxSliderTop","paneHeight","sliderHeight","setOnScrollStyles","cssValue","sliderTop","scrollRAF","_this","slider","events","down","isBeingDragged","offsetY","pageY","offset","is","target","addClass","activeClass","bind","drag","sliderY","paneTop","scroll","up","removeClass","unbind","panedown","layerY","preventPageScrolling","wheel","delta","enter","_ref","buttons","which","apply","arguments","addEvents","removeEvents","disableResize","pane","cssRule","currentPadding","paneClass","sliderClass","append","getComputedStyle","getPropertyValue","right","paddingRight","enabledClass","restore","stopped","show","contentHeight","contentPosition","contentStyle","contentStyleOverflowY","paneBottom","paneOuterHeight","parentMaxHeight","stop","overflowY","parseInt","outerHeight","Math","round","sliderMinHeight","sliderMaxHeight","overflowX","hide","opacity","alwaysVisible","visibility","marginRight","max","min","scrollBottom","scrollTo","node","destroy","remove","removeAttr","hasClass","flash","flashedClass","fn","nanoScroller","settings","each","scrollbar","nanoscroller","extend"],"mappings":"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","file":"jquery.nanoscroller.min.js"}
\ No newline at end of file
{"version":3,"file":"jquery.nanoscroller.min.js","sources":["../../coffeescripts/jquery.nanoscroller.coffee"],"names":[],"mappings":"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"}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment