Modernizing, initial pass.
This commit is contained in:
parent
9ceabc0a75
commit
a5ceb5e25e
|
@ -3,3 +3,6 @@
|
|||
*#
|
||||
.#*
|
||||
*~
|
||||
\#*
|
||||
node_modules/*
|
||||
es5/*
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# -*-makefile-gmake-*-
|
||||
|
||||
.PHONY: test list style ntest
|
||||
|
||||
all: es5 es5/sitedarts.js
|
||||
|
||||
es5:
|
||||
mkdir -p es5
|
||||
|
||||
es5/sitedarts.js: es5 node_modules/babel-cli
|
||||
./node_modules/babel-cli/bin/babel.js -o es5/sitedarts.js es6/sitedarts.js
|
||||
|
||||
node_modules/http-server node_modules/babel-cli:
|
||||
npm install
|
||||
|
||||
serve: node_modules/http-server es5/sitedarts.js
|
||||
./node_modules/http-server/bin/http-server .
|
||||
|
||||
clean:
|
||||
rm -fr es5
|
||||
rm -fr node_modules
|
|
@ -13,15 +13,13 @@ develop code for e-book readers.
|
|||
## Installation
|
||||
|
||||
Sitedarts uses jquery (1.3.2 or better required) and jquery.easing.
|
||||
Both are provided in this download. It's just Javascript, otherwise.
|
||||
Use as directed.
|
||||
|
||||
## Copyright
|
||||
|
||||
Sitedarts is copyright (c) 2011 Elf M. Sternberg. Included libraries
|
||||
are covered by their respective copyright holders, and are used with
|
||||
permission of the licenses included. See the MIT-LICENSE file for
|
||||
the license on sitedarts.js itself.
|
||||
Sitedarts is copyright (c) 2011, 2016 Elf M. Sternberg. Included
|
||||
libraries are covered by their respective copyright holders, and are
|
||||
used with permission of the licenses included. See the MIT-LICENSE file
|
||||
for the license on sitedarts.js itself.
|
||||
|
||||
## To Do
|
||||
|
||||
|
@ -34,17 +32,17 @@ Provide themes for dart types (metal, glass, plain, colorful, drab).
|
|||
Fix the arbitrariness of the layout: ensure that the bottom of the
|
||||
bottom dart, and the top of the top dart, are within the viewport.
|
||||
|
||||
Allow the darts to be on the left, or even across the top and bottom
|
||||
of the viewport.
|
||||
Allow the darts to be on the left, or even across the top and bottom of
|
||||
the viewport.
|
||||
|
||||
Guarantee easing to the target even when the target mark is well
|
||||
within the viewport at the bottom of the document.
|
||||
|
||||
Set a highlight class on the dart corresponding to the anchor the user
|
||||
is "within." This is a nebulous concept. If two or more anchors are
|
||||
visible on the screen, keep the lower one highlighted if it was the
|
||||
last one chosen. (cf. Eugene Jarvis' "The way a program looks smart
|
||||
is it doesn't do anything stupid.")
|
||||
visible on the screen, keep the lower one highlighted if it was the last
|
||||
one chosen. (cf. Eugene Jarvis' "The way a program looks smart is it
|
||||
doesn't do anything stupid.")
|
||||
|
||||
Allow sitedarts to work within an arbitrary container pair, rather
|
||||
than $(window) and $(document).
|
|
@ -1,8 +1,9 @@
|
|||
/*global jQuery */
|
||||
/*!
|
||||
* jQuery siteDarts
|
||||
* Examples and documentation at: http://elfsternberg.com/projects/sitedarts/
|
||||
* Copyright (c) 2011 E. M. Sternberg
|
||||
* Version: 0.8
|
||||
* Version: 0.9
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
|
@ -11,50 +12,51 @@
|
|||
|
||||
|
||||
;(function($) {
|
||||
|
||||
$.fn.siteDarts = function(options) {
|
||||
return this.each(function() {
|
||||
|
||||
options = $.extend(true, {}, $.fn.siteDarts.defaults, options)
|
||||
names = $('a[name]');
|
||||
$.fn.siteDarts = (options) => {
|
||||
return this.each(() => {
|
||||
options = $.extend(true, {}, $.fn.siteDarts.defaults, options);
|
||||
var names = $('a[name]');
|
||||
|
||||
function reposition() {
|
||||
var reposition = () => {
|
||||
var prop = $(window).height();
|
||||
var doch = $(document).height();
|
||||
|
||||
names.each(function(dex) {
|
||||
var n = $(this).attr('name')
|
||||
names.each((dex) => {
|
||||
var n = $(this).attr('name');
|
||||
var d = $(this).offset().top;
|
||||
var a = $("li." + options.markitem + ' a[href="#' + n + '"]');
|
||||
var p = a.parent();
|
||||
p.animate({top: prop * (d / doch) - dex * 7});
|
||||
$("li." + options.markitem + ' a[href="#' + n + '"]')
|
||||
.parent()
|
||||
.animate({top: prop * (d / doch) - dex * 7});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function buildDarts() {
|
||||
var self = this;
|
||||
var buildDarts = () => {
|
||||
if ($('#' + options.marklist)) {
|
||||
$('#' + options.marklist).remove()
|
||||
$('#' + options.marklist).remove();
|
||||
}
|
||||
var l = $('<ul id="' + options.marklist + '"></ul>').appendTo('body');
|
||||
names.each(function() {
|
||||
names.each(() => {
|
||||
var o = $('<li class="' + options.markitem + '"><a href="#' +
|
||||
$(this).attr('name') + '">' + $(this).text() + '</a></li>').appendTo(l);
|
||||
|
||||
|
||||
$('a', o).click(function(event) {
|
||||
event.preventDefault();
|
||||
var target = $(event.target).attr('href').replace('#', '')
|
||||
var target = $(event.target).attr('href').replace('#', '');
|
||||
var targetOffset = $('a[name="' + target + '"]').offset().top;
|
||||
$('html body').animate({scrollTop: targetOffset},
|
||||
{duration: 800,
|
||||
easing: options.easing,
|
||||
complete: function() {
|
||||
location.hash = target;
|
||||
}
|
||||
});
|
||||
$('html body').animate(
|
||||
{
|
||||
scrollTop: targetOffset
|
||||
},
|
||||
{
|
||||
duration: 800,
|
||||
easing: options.easing,
|
||||
complete: function() {
|
||||
window.location.hash = target;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
buildDarts();
|
||||
reposition();
|
||||
});
|
File diff suppressed because it is too large
Load Diff
|
@ -1,140 +0,0 @@
|
|||
/*
|
||||
* jQuery EasIng v1.1.2 - http://gsgd.co.uk/sandbox/jquery.easIng.php
|
||||
*
|
||||
* Uses the built In easIng capabilities added In jQuery 1.1
|
||||
* to offer multiple easIng options
|
||||
*
|
||||
* Copyright (c) 2007 George Smith
|
||||
* Licensed under the MIT License:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
// t: current time, b: begInnIng value, c: change In value, d: duration
|
||||
|
||||
jQuery.extend( jQuery.easing,
|
||||
{
|
||||
easeInQuad: function (x, t, b, c, d) {
|
||||
return c*(t/=d)*t + b;
|
||||
},
|
||||
easeOutQuad: function (x, t, b, c, d) {
|
||||
return -c *(t/=d)*(t-2) + b;
|
||||
},
|
||||
easeInOutQuad: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return c/2*t*t + b;
|
||||
return -c/2 * ((--t)*(t-2) - 1) + b;
|
||||
},
|
||||
easeInCubic: function (x, t, b, c, d) {
|
||||
return c*(t/=d)*t*t + b;
|
||||
},
|
||||
easeOutCubic: function (x, t, b, c, d) {
|
||||
return c*((t=t/d-1)*t*t + 1) + b;
|
||||
},
|
||||
easeInOutCubic: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return c/2*t*t*t + b;
|
||||
return c/2*((t-=2)*t*t + 2) + b;
|
||||
},
|
||||
easeInQuart: function (x, t, b, c, d) {
|
||||
return c*(t/=d)*t*t*t + b;
|
||||
},
|
||||
easeOutQuart: function (x, t, b, c, d) {
|
||||
return -c * ((t=t/d-1)*t*t*t - 1) + b;
|
||||
},
|
||||
easeInOutQuart: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
|
||||
return -c/2 * ((t-=2)*t*t*t - 2) + b;
|
||||
},
|
||||
easeInQuint: function (x, t, b, c, d) {
|
||||
return c*(t/=d)*t*t*t*t + b;
|
||||
},
|
||||
easeOutQuint: function (x, t, b, c, d) {
|
||||
return c*((t=t/d-1)*t*t*t*t + 1) + b;
|
||||
},
|
||||
easeInOutQuint: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
|
||||
return c/2*((t-=2)*t*t*t*t + 2) + b;
|
||||
},
|
||||
easeInSine: function (x, t, b, c, d) {
|
||||
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
|
||||
},
|
||||
easeOutSine: function (x, t, b, c, d) {
|
||||
return c * Math.sin(t/d * (Math.PI/2)) + b;
|
||||
},
|
||||
easeInOutSine: function (x, t, b, c, d) {
|
||||
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
|
||||
},
|
||||
easeInExpo: function (x, t, b, c, d) {
|
||||
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
|
||||
},
|
||||
easeOutExpo: function (x, t, b, c, d) {
|
||||
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
|
||||
},
|
||||
easeInOutExpo: function (x, t, b, c, d) {
|
||||
if (t==0) return b;
|
||||
if (t==d) return b+c;
|
||||
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
|
||||
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
|
||||
},
|
||||
easeInCirc: function (x, t, b, c, d) {
|
||||
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
|
||||
},
|
||||
easeOutCirc: function (x, t, b, c, d) {
|
||||
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
|
||||
},
|
||||
easeInOutCirc: function (x, t, b, c, d) {
|
||||
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
|
||||
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
|
||||
},
|
||||
easeInElastic: function (x, t, b, c, d) {
|
||||
var s=1.70158;var p=0;var a=c;
|
||||
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
||||
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
||||
},
|
||||
easeOutElastic: function (x, t, b, c, d) {
|
||||
var s=1.70158;var p=0;var a=c;
|
||||
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
||||
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
|
||||
},
|
||||
easeInOutElastic: function (x, t, b, c, d) {
|
||||
var s=1.70158;var p=0;var a=c;
|
||||
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
|
||||
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
||||
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
|
||||
},
|
||||
easeInBack: function (x, t, b, c, d, s) {
|
||||
if (s == undefined) s = 1.70158;
|
||||
return c*(t/=d)*t*((s+1)*t - s) + b;
|
||||
},
|
||||
easeOutBack: function (x, t, b, c, d, s) {
|
||||
if (s == undefined) s = 1.70158;
|
||||
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
|
||||
},
|
||||
easeInOutBack: function (x, t, b, c, d, s) {
|
||||
if (s == undefined) s = 1.70158;
|
||||
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
|
||||
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
|
||||
},
|
||||
easeInBounce: function (x, t, b, c, d) {
|
||||
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
|
||||
},
|
||||
easeOutBounce: function (x, t, b, c, d) {
|
||||
if ((t/=d) < (1/2.75)) {
|
||||
return c*(7.5625*t*t) + b;
|
||||
} else if (t < (2/2.75)) {
|
||||
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
|
||||
} else if (t < (2.5/2.75)) {
|
||||
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
|
||||
} else {
|
||||
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
|
||||
}
|
||||
},
|
||||
easeInOutBounce: function (x, t, b, c, d) {
|
||||
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
|
||||
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
|
||||
}
|
||||
});
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"name": "Sitedarts",
|
||||
"version": "0.9.0",
|
||||
"description": "A jQUery module to assist with navigating large documents",
|
||||
"main": "sitedarts.js",
|
||||
"directories": {
|
||||
"example": "examples"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-cli": "~6.10.1",
|
||||
"babel-preset-es2015": "~6.9.0",
|
||||
"bower": "~1.7.9",
|
||||
"http-server": "~0.9.0"
|
||||
},
|
||||
"dependencies": {},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/elfsternberg/sitedarts.git"
|
||||
},
|
||||
"keywords": [
|
||||
"jquery",
|
||||
"plugin",
|
||||
"navigation"
|
||||
],
|
||||
"author": "Elf M. Sternberg <elf.sternberg@gmail.com>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/elfsternberg/sitedarts/issues"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue