Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge pull request #99

  • Loading branch information...
commit 7f7c12661b327ea46fc8d04674c4a6360f6239b2 1 parent 901c6eb
Johannes Schickling schickling authored
4 .gitignore
View
@@ -1,2 +1,4 @@
.DS_Store
-.idea
+.idea
+.tern-port
+node_modules
9 .travis.yml
View
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+ - 0.6
+ - 0.7
+ - 0.8
+ - 0.9
+ - 0.10
+before_script:
+ - "sudo npm install -g jasmine-node"
63 Gruntfile.js
View
@@ -0,0 +1,63 @@
+module.exports = function (grunt) {
+
+ grunt.initConfig({
+
+ pkg: grunt.file.readJSON('package.json'),
+
+ jshint: {
+ files: [
+ 'Gruntfile.js',
+ 'src/jquery.overscroll.js',
+ 'test/*.js',
+ 'test/modules/*.js',
+ 'test/drift-canvas/js/app.js'
+ ],
+ options: {
+ // options here to override JSHint defaults
+ globals: {
+ jQuery: true,
+ console: true,
+ module: true,
+ document: true
+ }
+ }
+ },
+
+ connect: {
+ server: {
+ options: {
+ port: 9000,
+ base: './'
+ }
+ },
+ driftcanvas: {
+ options: {
+ port: 8999,
+ base: './test/',
+ keepalive: true
+ }
+ }
+ },
+
+ casperjs: {
+ files: ['test/*.js']
+ }
+
+ });
+
+ grunt.loadNpmTasks('grunt-contrib-jshint');
+ grunt.loadNpmTasks('grunt-contrib-connect');
+ grunt.loadNpmTasks('grunt-casperjs');
+
+
+ grunt.registerTask('test', [
+ 'jshint',
+ 'connect:server',
+ 'casperjs'
+ ]);
+
+ grunt.registerTask('default', [
+ 'test'
+ ]);
+
+};
2  demo.html
View
@@ -225,7 +225,7 @@
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--<script src="jquery-latest.js"></script>-->
- <script src="jquery.overscroll.js"></script>
+ <script src="src/jquery.overscroll.js"></script>
<script>
$(function(o){
o = $("#overscroll").overscroll({
14 package.json
View
@@ -0,0 +1,14 @@
+{
+ "name": "jquery-overscroll",
+ "version": "1.7.2",
+ "dependencies": {},
+ "devDependencies": {
+ "grunt": "~0.4.1",
+ "grunt-contrib-jshint": "~0.5.2",
+ "grunt-contrib-connect": "~0.2.0",
+ "grunt-casperjs": "~1.0.6"
+ },
+ "scripts": {
+ "test": "grunt test --verbose"
+ }
+}
4 jquery.overscroll.js → src/jquery.overscroll.js
View
@@ -231,6 +231,7 @@
function scroll(event) {
var data = event.data;
if (!data.flags.dragged) {
+ /*jshint validthis:true */
moveThumbs(data.thumbs, data.sizing, this.scrollLeft, this.scrollTop);
}
}
@@ -286,6 +287,7 @@
// actually modify scroll offsets
if (options.wheelDirection === 'vertical'){
+ /*jshint validthis:true */
this.scrollTop -= delta;
} else if ( options.wheelDirection === 'horizontal') {
this.scrollLeft -= delta;
@@ -741,6 +743,7 @@
// You can find it's exposure point at the end
// of this closure
function overscroll(options) {
+ /*jshint validthis:true */
return this.removeOverscroll().each(function() {
setup(this, options);
});
@@ -750,6 +753,7 @@
// You can find it's exposure point at the end
// of this closure
function removeOverscroll() {
+ /*jshint validthis:true */
return this.each(function () {
teardown(this);
});
0  jquery.overscroll.min.js → src/jquery.overscroll.min.js
View
File renamed without changes
70 test/dragdrop.js
View
@@ -0,0 +1,70 @@
+var casper = require('casper').create();
+
+// set up
+casper.start();
+casper.options.clientScripts = ['./test/lib/jquery.js'];
+casper.viewport(500, 500);
+
+
+// add helper methods
+casper.getScrollTop = function () {
+ return this.evaluate(function () {
+ return $('#overscroll').scrollTop();
+ });
+};
+
+casper.getScrollLeft = function () {
+ return this.evaluate(function () {
+ return $('#overscroll').scrollLeft();
+ });
+};
+
+casper.thenOpen('http://localhost:9000/test/resources/simple.html', function () {
+
+ casper.test.comment('test scroll up');
+
+ this.test.assertEquals(this.getScrollTop(), 0, 'init - check top');
+ this.test.assertEquals(this.getScrollLeft(), 0, 'init - check left');
+
+ this.mouse.down(0, 400);
+ this.mouse.move(0, 300);
+ this.mouse.up(0, 300);
+
+ this.test.assertEquals(this.getScrollTop(), 100, 'dragged 100 px up - check top');
+ this.test.assertEquals(this.getScrollLeft(), 0, 'dragged 100 px up - check left');
+
+});
+
+casper.thenOpen('http://localhost:9000/test/resources/simple.html', function () {
+
+ casper.test.comment('test scroll left');
+
+ this.test.assertEquals(this.getScrollTop(), 0, 'init - check top');
+ this.test.assertEquals(this.getScrollLeft(), 0, 'init - check left');
+
+ this.mouse.down(400, 0);
+ this.mouse.move(300, 0);
+ this.mouse.up(300, 0);
+
+ this.test.assertEquals(this.getScrollTop(), 0, 'dragged 100 px left - check top');
+ this.test.assertEquals(this.getScrollLeft(), 100, 'dragged 100 px left - check left');
+
+});
+
+casper.thenOpen('http://localhost:9000/test/resources/simple.html', function () {
+
+ casper.test.comment('test scroll up+left');
+
+ this.test.assertEquals(this.getScrollTop(), 0, 'init - check top');
+ this.test.assertEquals(this.getScrollLeft(), 0, 'init - check left');
+
+ this.mouse.down(400, 400);
+ this.mouse.move(300, 300);
+ this.mouse.up(300, 300);
+
+ this.test.assertEquals(this.getScrollTop(), 100, 'dragged 100 px up+left - check top');
+ this.test.assertEquals(this.getScrollLeft(), 100, 'dragged 100 px up+left - check left');
+
+});
+
+casper.run();
6 test/drift-canvas/css/style.css
View
@@ -0,0 +1,6 @@
+body div {
+ margin-left: auto;
+ margin-right: auto;
+ width: 500px;
+ height: 500px;
+}
16 test/drift-canvas/index.html
View
@@ -0,0 +1,16 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Drift Canvas</title>
+ <link rel="stylesheet" href="css/style.css">
+</head>
+<body>
+ <div>
+ <canvas class='drift-canvas' width="500" height="500"></canvas>
+ </div>
+
+ <script src="../modules/drift-move.js"></script>
+ <script src="./js/app.js"></script>
+</body>
+</html>
50 test/drift-canvas/js/app.js
View
@@ -0,0 +1,50 @@
+window.onload = function (e) {
+
+ var canvas = document.querySelector('.drift-canvas');
+ var ctx = canvas.getContext('2d');
+ var shape = {
+ type:'circle',
+ x: 200,
+ y: 200,
+ xdir: 1,
+ ydir: 1,
+ radius: 25,
+ fill:'green',
+ stroke:'black'
+ };
+
+ function drawCircle (x, y, color) {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ ctx.beginPath();
+ ctx.fillStyle = color || shape.fill;
+ ctx.strokeStyle = shape.stroke;
+ ctx.arc(x + shape.radius + 2, y + shape.radius + 2, shape.radius, Math.PI * 2, false);
+ ctx.stroke();
+ ctx.fill();
+ }
+
+
+ //start drifting
+ setInterval (function () {
+ drift({
+ startCoordinates: { //optional
+ x: shape.x,
+ y: shape.y
+ },
+ degree: 270, // 90 means move right
+ distance: 50, // speed in pixels per second
+ duration: 0.02, // duration of drift in seconds
+ start: function (x,y) {
+ drawCircle(x, y, 'green');
+ }, // Callback for start, arguments x,y
+ way: function (x,y) {
+ drawCircle(x,y, 'red');
+ }, // Callback for the way, arguments x,y
+ finished: function (x,y) {
+ drawCircle(x,y,'black');
+ }, // Callback when finished, arguments x,y
+ waitFinished: 0// time to wait between last way() and finished call
+ });
+ }, 1000);
+
+};
170 test/drift.js
View
@@ -0,0 +1,170 @@
+var casper = require('casper').create(),
+ drift = require('./test/modules/drift-move');
+
+// set up
+casper.start();
+casper.options.clientScripts = ['./test/lib/jquery.js'];
+casper.options.waitTimeout = 10000;
+casper.viewport(500, 500);
+
+
+// add helper methods
+casper.getScrollTop = function () {
+ return this.evaluate(function () {
+ return $('#overscroll').scrollTop();
+ });
+};
+
+casper.getScrollLeft = function () {
+ return this.evaluate(function () {
+ return $('#overscroll').scrollLeft();
+ });
+};
+
+function testDrift (test, direction) {
+ casper.thenOpen('http://localhost:9000/test/resources/simple.html', function () {
+
+ this.test.assertEquals(this.getScrollTop(), 0, 'init - check top');
+ this.test.assertEquals(this.getScrollLeft(), 0, 'init - check left');
+
+ var that = this;
+ var start;
+
+ var distance = test.distance;
+ var duration = test.duration;
+ var degree = test.degree;
+ var target = test.target;
+
+ var pre = distance + ' px, ' + degree + 'º, ' + duration + ' s';
+ casper.test.comment('drift ' + (direction ? direction + ', ' : '') + pre);
+
+ var startCoordinates = {};
+ if (test.hasOwnProperty('startCoordinates')) {
+ startCoordinates = {
+ x: test.startCoordinates[0],
+ y: test.startCoordinates[1]
+ };
+ } else {
+ startCoordinates = {
+ x: 20,
+ y: 400
+ };
+ }
+
+ casper.waitFor(function () {
+ var result = drift({
+ startCoordinates: startCoordinates,
+ degree: degree, // 90 means move right
+ distance: distance, // speed in pixels per second
+ duration: duration, // duration of drift in seconds
+ start: function (x,y) {
+ //casper.test.comment('down ' + x + ' ' + y);
+ that.mouse.down(x, y);
+ }, // Callback for start, arguments x,y
+ way: function (x,y) {
+ //casper.test.comment('move ' + x + ' ' + y);
+ that.mouse.move(x, y);
+ }, // Callback for the way, arguments x,y
+ finished: function (x,y) {
+ //casper.test.comment('up ' + x + ' ' + y);
+ that.mouse.up(x, y);
+ }
+ }, window);
+
+ return result;
+ }, function () {
+ that.test.assertEquals(
+ that.getScrollLeft(),
+ target.direct[0],
+ 'x = ' + target.direct[0] + ', direct after drift'
+ );
+ that.test.assertEquals(
+ that.getScrollTop(),
+ target.direct[1],
+ 'y = ' + target.direct[1] + ', direct after drift'
+ );
+ casper.wait(1000, function () {
+ that.test.assertEquals(
+ that.getScrollLeft(),
+ target.delay[0],
+ 'x = ' + target.direct[0] + ', 1 sec after drift'
+ );
+ that.test.assertEquals(
+ that.getScrollTop(),
+ target.delay[1],
+ 'y = ' + target.direct[1] + ', 1 sec after drift'
+ );
+ });
+ });
+
+
+ });
+}
+
+var driftUp = [
+ {
+ target: {
+ direct: [0, 81],
+ delay: [0, 110]
+ },
+ distance: 50
+ },
+ {
+ target: {
+ direct: [0, 165],
+ delay: [0, 236]
+ },
+ distance: 100
+ },
+ {
+ target: {
+ direct: [0, 247],
+ delay: [0, 363]
+ },
+ distance: 150
+ }
+];
+
+driftUp.forEach(function (test) {
+ // same options for all tests
+ // don't need to be repeated!
+ test.startCoordinates = [20, 400];
+ test.duration = 0.02;
+ test.degree = 0;
+
+ testDrift(test, 'up');
+});
+
+var driftLeft = [
+ {
+ target: {
+ direct: [81, 0],
+ delay: [110, 0]
+ },
+ distance: 50
+ },
+ {
+ target: {
+ direct: [165, 0],
+ delay: [236, 0]
+ },
+ distance: 100
+ },
+ {
+ target: {
+ direct: [247, 0],
+ delay: [363, 0]
+ },
+ distance: 150
+ }
+];
+
+driftLeft.forEach(function (test) {
+ test.startCoordinates = [400, 20];
+ test.duration = 0.02;
+ test.degree = 270;
+
+ testDrift(test, 'left');
+});
+
+casper.run();
8,755 test/lib/jquery.js
View
8,755 additions, 0 deletions not shown
94 test/modules/drift-move.js
View
@@ -0,0 +1,94 @@
+/**
+ * A wrapper function to make easy drifts.
+ * Works as a nodejs or browser module.
+ * @author vardump
+ * @param {object} options {
+ startCoordinates: { //optional
+ x: Number,
+ y: Number
+ },
+ degree: Number, // degree of direction to drift.
+ distance: Number, // distance in pixel
+ duration: Number, // duration of drift in seconds
+ start: Function, // Callback for start, arguments x,y
+ way: Function, // Callback for the way, arguments x,y
+ finished: Function, // Callback when finished, arguments x,y
+ waitFinished: Number// time to wait between last way() and finished call
+ }
+ */
+function drift (options, window) {
+ var MOVE_INTERVAL = 2; //ms
+ var speed = options.distance / options.duration;
+ options.degree = ((Math.PI * 2) / 360) * options.degree;
+ var stepX = Math.sin(options.degree);
+ var stepY = -Math.cos(options.degree);
+
+ var moveCoeficent = (MOVE_INTERVAL / 1000) * speed;
+ var interval;
+ var x, y;
+ var counter = 0;
+ options.duration = options.duration * 1000;
+
+ var limit = Math.floor(options.duration / MOVE_INTERVAL);
+ var that = this;
+
+ // if no start point was given, start at 0
+ if (options.hasOwnProperty('startCoordinates')) {
+ if (options.startCoordinates.hasOwnProperty('x') &&
+ options.startCoordinates.hasOwnProperty('y') &&
+ typeof options.startCoordinates.x === 'number' &&
+ typeof options.startCoordinates.y === 'number') {
+ x = options.startCoordinates.x;
+ y = options.startCoordinates.y;
+ } else {
+ x = 0;
+ y = 0;
+ }
+ } else {
+ x = 0;
+ y = 0;
+ }
+
+ stepX = stepX * moveCoeficent;
+ stepY = stepY * moveCoeficent;
+
+ //start
+ if (options.hasOwnProperty('start') &&
+ typeof options.start === 'function') {
+ //call start callback
+ options.start(x, y);
+ }
+
+ var returnVal = true;
+
+ interval = setInterval(function () {
+ //console.log(stepX, stepY);
+ if (counter <= limit) {
+ x += stepX;
+ y += stepY;
+ //call the way callback
+ options.way(x, y);
+ counter += 1;
+ } else {
+ if (options.hasOwnProperty('waitFinished')) {
+ setTimeout(function () {
+ options.finished(x, y);
+ }, options.waitFinished);
+ } else {
+ options.finished(x, y);
+ }
+ if (window) {
+ window.clearInterval(interval);
+ } else {
+ clearInterval(interval);
+ }
+ returnVal = true;
+ }
+ }, MOVE_INTERVAL);
+ return returnVal;
+}
+
+//the frontend doesnt know any module ..
+if (typeof module !== 'undefined') {
+ module.exports = drift;
+}
223 test/resources/simple.html
View
@@ -0,0 +1,223 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>simple</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+ <div id="overscroll">
+ <ul>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li></li><li class="alt"></li><li></li><li class="alt"></li><li></li><li class="alt"></li>
+ <li class="last"></li>
+ </ul>
+ </div>
+
+ <script src="http://code.jquery.com/jquery-latest.js"></script>
+ <script src="../../src/jquery.overscroll.js"></script>
+ <script>
+ $(function(){
+ $("#overscroll").overscroll();
+ });
+ </script>
+</body>
+</html>
40 test/resources/style.css
View
@@ -0,0 +1,40 @@
+body {
+ margin: 0;
+}
+
+#overscroll {
+ width:500px;
+ height:500px;
+ overflow:hidden;
+ position:relative;
+}
+
+#overscroll ul {
+ width:2500px;
+ margin:0;
+ padding:0;
+}
+
+#overscroll li {
+ display:block;
+ float:left;
+ width:100px;
+ height:100px;
+ background-color:#FFF;
+}
+
+#overscroll li.alt {
+ background-color:#C00;
+}
+
+#overscroll li.no-drag {
+ background-color:#000;
+ color:#FFF;
+}
+
+#overscroll li.last {
+ clear:both;
+ visibility:hidden;
+ height:0;
+ padding:0;
+}
Please sign in to comment.
Something went wrong with that request. Please try again.