Vortrag für GIT angefangen.
This commit is contained in:
parent
61165635cd
commit
40e34e4a91
60 changed files with 8603 additions and 0 deletions
407
git/core/deck.core.css
Normal file
407
git/core/deck.core.css
Normal file
|
@ -0,0 +1,407 @@
|
|||
html, body {
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body.deck-container {
|
||||
overflow-y: auto;
|
||||
position: static;
|
||||
}
|
||||
|
||||
.deck-container {
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
margin: 0 auto;
|
||||
padding: 0 48px;
|
||||
font-size: 16px;
|
||||
line-height: 1.25;
|
||||
overflow: hidden;
|
||||
/* Resets and base styles from HTML5 Boilerplate */
|
||||
/* End HTML5 Boilerplate adaptations */
|
||||
}
|
||||
.js .deck-container {
|
||||
visibility: hidden;
|
||||
}
|
||||
.ready .deck-container {
|
||||
visibility: visible;
|
||||
}
|
||||
.touch .deck-container {
|
||||
-webkit-text-size-adjust: none;
|
||||
-moz-text-size-adjust: none;
|
||||
}
|
||||
.deck-container div, .deck-container span, .deck-container object, .deck-container iframe,
|
||||
.deck-container h1, .deck-container h2, .deck-container h3, .deck-container h4, .deck-container h5, .deck-container h6, .deck-container p, .deck-container blockquote, .deck-container pre,
|
||||
.deck-container abbr, .deck-container address, .deck-container cite, .deck-container code, .deck-container del, .deck-container dfn, .deck-container em, .deck-container img, .deck-container ins, .deck-container kbd, .deck-container q, .deck-container samp,
|
||||
.deck-container small, .deck-container strong, .deck-container sub, .deck-container sup, .deck-container var, .deck-container b, .deck-container i, .deck-container dl, .deck-container dt, .deck-container dd, .deck-container ol, .deck-container ul, .deck-container li,
|
||||
.deck-container fieldset, .deck-container form, .deck-container label, .deck-container legend,
|
||||
.deck-container table, .deck-container caption, .deck-container tbody, .deck-container tfoot, .deck-container thead, .deck-container tr, .deck-container th, .deck-container td,
|
||||
.deck-container article, .deck-container aside, .deck-container canvas, .deck-container details, .deck-container figcaption, .deck-container figure,
|
||||
.deck-container footer, .deck-container header, .deck-container hgroup, .deck-container menu, .deck-container nav, .deck-container section, .deck-container summary,
|
||||
.deck-container time, .deck-container mark, .deck-container audio, .deck-container video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
.deck-container article, .deck-container aside, .deck-container details, .deck-container figcaption, .deck-container figure,
|
||||
.deck-container footer, .deck-container header, .deck-container hgroup, .deck-container menu, .deck-container nav, .deck-container section {
|
||||
display: block;
|
||||
}
|
||||
.deck-container blockquote, .deck-container q {
|
||||
quotes: none;
|
||||
}
|
||||
.deck-container blockquote:before, .deck-container blockquote:after, .deck-container q:before, .deck-container q:after {
|
||||
content: "";
|
||||
content: none;
|
||||
}
|
||||
.deck-container ins {
|
||||
background-color: #ff9;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
}
|
||||
.deck-container mark {
|
||||
background-color: #ff9;
|
||||
color: #000;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
.deck-container del {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
.deck-container abbr[title], .deck-container dfn[title] {
|
||||
border-bottom: 1px dotted;
|
||||
cursor: help;
|
||||
}
|
||||
.deck-container table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.deck-container hr {
|
||||
display: block;
|
||||
height: 1px;
|
||||
border: 0;
|
||||
border-top: 1px solid #ccc;
|
||||
margin: 1em 0;
|
||||
padding: 0;
|
||||
}
|
||||
.deck-container input, .deck-container select {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.deck-container select, .deck-container input, .deck-container textarea, .deck-container button {
|
||||
font: 99% sans-serif;
|
||||
}
|
||||
.deck-container pre, .deck-container code, .deck-container kbd, .deck-container samp {
|
||||
font-family: monospace, sans-serif;
|
||||
}
|
||||
.deck-container a {
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
.deck-container a:hover, .deck-container a:active {
|
||||
outline: none;
|
||||
}
|
||||
.deck-container ul, .deck-container ol {
|
||||
margin-left: 2em;
|
||||
vertical-align: top;
|
||||
}
|
||||
.deck-container ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
.deck-container nav ul, .deck-container nav li {
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
list-style-image: none;
|
||||
}
|
||||
.deck-container small {
|
||||
font-size: 85%;
|
||||
}
|
||||
.deck-container strong, .deck-container th {
|
||||
font-weight: bold;
|
||||
}
|
||||
.deck-container td {
|
||||
vertical-align: top;
|
||||
}
|
||||
.deck-container sub, .deck-container sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
}
|
||||
.deck-container sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
.deck-container sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
.deck-container textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
.ie6 .deck-container legend, .ie7 .deck-container legend {
|
||||
margin-left: -7px;
|
||||
}
|
||||
.deck-container input[type="radio"] {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
.deck-container input[type="checkbox"] {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.ie7 .deck-container input[type="checkbox"] {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
.ie6 .deck-container input {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
.deck-container label, .deck-container input[type="button"], .deck-container input[type="submit"], .deck-container input[type="image"], .deck-container button {
|
||||
cursor: pointer;
|
||||
}
|
||||
.deck-container button, .deck-container input, .deck-container select, .deck-container textarea {
|
||||
margin: 0;
|
||||
}
|
||||
.deck-container input:invalid, .deck-container textarea:invalid {
|
||||
border-radius: 1px;
|
||||
-moz-box-shadow: 0px 0px 5px red;
|
||||
-webkit-box-shadow: 0px 0px 5px red;
|
||||
box-shadow: 0px 0px 5px red;
|
||||
}
|
||||
.deck-container input:invalid .no-boxshadow, .deck-container textarea:invalid .no-boxshadow {
|
||||
background-color: #f0dddd;
|
||||
}
|
||||
.deck-container button {
|
||||
width: auto;
|
||||
overflow: visible;
|
||||
}
|
||||
.ie7 .deck-container img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
.deck-container, .deck-container select, .deck-container input, .deck-container textarea {
|
||||
color: #444;
|
||||
}
|
||||
.deck-container a {
|
||||
color: #607890;
|
||||
}
|
||||
.deck-container a:hover, .deck-container a:focus {
|
||||
color: #036;
|
||||
}
|
||||
.deck-container a:link {
|
||||
-webkit-tap-highlight-color: #fff;
|
||||
}
|
||||
.deck-container.deck-loading {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.slide {
|
||||
width: auto;
|
||||
min-height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
.slide h1 {
|
||||
font-size: 4.5em;
|
||||
}
|
||||
.slide h1, .slide .vcenter {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
padding-top: 1em;
|
||||
max-height: 100%;
|
||||
}
|
||||
.csstransforms .slide h1, .csstransforms .slide .vcenter {
|
||||
padding: 0 48px;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
-webkit-transform: translate(0, -50%);
|
||||
-moz-transform: translate(0, -50%);
|
||||
-ms-transform: translate(0, -50%);
|
||||
-o-transform: translate(0, -50%);
|
||||
transform: translate(0, -50%);
|
||||
}
|
||||
.slide .vcenter h1 {
|
||||
position: relative;
|
||||
top: auto;
|
||||
padding: 0;
|
||||
-webkit-transform: none;
|
||||
-moz-transform: none;
|
||||
-ms-transform: none;
|
||||
-o-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
.slide h2 {
|
||||
font-size: 2.25em;
|
||||
font-weight: bold;
|
||||
padding-top: .5em;
|
||||
margin: 0 0 .66666em 0;
|
||||
border-bottom: 3px solid #888;
|
||||
}
|
||||
.slide h3 {
|
||||
font-size: 1.4375em;
|
||||
font-weight: bold;
|
||||
margin-bottom: .30435em;
|
||||
}
|
||||
.slide h4 {
|
||||
font-size: 1.25em;
|
||||
font-weight: bold;
|
||||
margin-bottom: .25em;
|
||||
}
|
||||
.slide h5 {
|
||||
font-size: 1.125em;
|
||||
font-weight: bold;
|
||||
margin-bottom: .2222em;
|
||||
}
|
||||
.slide h6 {
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.slide img, .slide iframe, .slide video {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
.slide video, .slide iframe, .slide img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.slide p, .slide blockquote, .slide iframe, .slide img, .slide ul, .slide ol, .slide pre, .slide video {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.slide pre {
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
padding: 1em;
|
||||
border: 1px solid #888;
|
||||
}
|
||||
.slide em {
|
||||
font-style: italic;
|
||||
}
|
||||
.slide li {
|
||||
padding: .25em 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.deck-before, .deck-previous, .deck-next, .deck-after {
|
||||
position: absolute;
|
||||
left: -999em;
|
||||
top: -999em;
|
||||
}
|
||||
|
||||
.deck-current {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.slide .slide {
|
||||
visibility: hidden;
|
||||
position: static;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.deck-child-current {
|
||||
position: static;
|
||||
z-index: 2;
|
||||
}
|
||||
.deck-child-current .slide {
|
||||
visibility: hidden;
|
||||
}
|
||||
.deck-child-current .deck-previous, .deck-child-current .deck-before, .deck-child-current .deck-current {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
@media screen and (max-device-width: 480px) {
|
||||
/* html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
|
||||
}
|
||||
@media print {
|
||||
* {
|
||||
background: transparent !important;
|
||||
color: black !important;
|
||||
text-shadow: none !important;
|
||||
filter: none !important;
|
||||
-ms-filter: none !important;
|
||||
-webkit-box-reflect: none !important;
|
||||
-moz-box-reflect: none !important;
|
||||
-webkit-box-shadow: none !important;
|
||||
-moz-box-shadow: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
* :before, * :after {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
a, a:visited {
|
||||
color: #444 !important;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a[href]:after {
|
||||
content: " (" attr(href) ")";
|
||||
}
|
||||
|
||||
abbr[title]:after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
|
||||
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
pre, blockquote {
|
||||
border: 1px solid #999;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
thead {
|
||||
display: table-header-group;
|
||||
}
|
||||
|
||||
tr, img {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
@page {
|
||||
margin: 0.5cm;
|
||||
}
|
||||
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h2, h3 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
|
||||
.slide {
|
||||
position: static !important;
|
||||
visibility: visible !important;
|
||||
display: block !important;
|
||||
-webkit-transform: none !important;
|
||||
-moz-transform: none !important;
|
||||
-o-transform: none !important;
|
||||
-ms-transform: none !important;
|
||||
transform: none !important;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
h1, .vcenter {
|
||||
-webkit-transform: none !important;
|
||||
-moz-transform: none !important;
|
||||
-o-transform: none !important;
|
||||
-ms-transform: none !important;
|
||||
transform: none !important;
|
||||
padding: 0 !important;
|
||||
position: static !important;
|
||||
}
|
||||
|
||||
.deck-container > .slide {
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
.deck-container {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
padding: 0 !important;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
script {
|
||||
display: none;
|
||||
}
|
||||
}
|
498
git/core/deck.core.js
Normal file
498
git/core/deck.core.js
Normal file
|
@ -0,0 +1,498 @@
|
|||
/*!
|
||||
Deck JS - deck.core
|
||||
Copyright (c) 2011 Caleb Troughton
|
||||
Dual licensed under the MIT license and GPL license.
|
||||
https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt
|
||||
https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt
|
||||
*/
|
||||
|
||||
/*
|
||||
The deck.core module provides all the basic functionality for creating and
|
||||
moving through a deck. It does so by applying classes to indicate the state of
|
||||
the deck and its slides, allowing CSS to take care of the visual representation
|
||||
of each state. It also provides methods for navigating the deck and inspecting
|
||||
its state, as well as basic key bindings for going to the next and previous
|
||||
slides. More functionality is provided by wholly separate extension modules
|
||||
that use the API provided by core.
|
||||
*/
|
||||
(function($, deck, document, undefined) {
|
||||
var slides, // Array of all the uh, slides...
|
||||
current, // Array index of the current slide
|
||||
$container, // Keeping this cached
|
||||
|
||||
events = {
|
||||
/*
|
||||
This event fires whenever the current slide changes, whether by way of
|
||||
next, prev, or go. The callback function is passed two parameters, from
|
||||
and to, equal to the indices of the old slide and the new slide
|
||||
respectively. If preventDefault is called on the event within this handler
|
||||
the slide change does not occur.
|
||||
|
||||
$(document).bind('deck.change', function(event, from, to) {
|
||||
alert('Moving from slide ' + from + ' to ' + to);
|
||||
});
|
||||
*/
|
||||
change: 'deck.change',
|
||||
|
||||
/*
|
||||
This event fires at the beginning of deck initialization, after the options
|
||||
are set but before the slides array is created. This event makes a good hook
|
||||
for preprocessing extensions looking to modify the deck.
|
||||
*/
|
||||
beforeInitialize: 'deck.beforeInit',
|
||||
|
||||
/*
|
||||
This event fires at the end of deck initialization. Extensions should
|
||||
implement any code that relies on user extensible options (key bindings,
|
||||
element selectors, classes) within a handler for this event. Native
|
||||
events associated with Deck JS should be scoped under a .deck event
|
||||
namespace, as with the example below:
|
||||
|
||||
var $d = $(document);
|
||||
$.deck.defaults.keys.myExtensionKeycode = 70; // 'h'
|
||||
$d.bind('deck.init', function() {
|
||||
$d.bind('keydown.deck', function(event) {
|
||||
if (event.which === $.deck.getOptions().keys.myExtensionKeycode) {
|
||||
// Rock out
|
||||
}
|
||||
});
|
||||
});
|
||||
*/
|
||||
initialize: 'deck.init'
|
||||
},
|
||||
|
||||
options = {},
|
||||
$d = $(document),
|
||||
|
||||
/*
|
||||
Internal function. Updates slide and container classes based on which
|
||||
slide is the current slide.
|
||||
*/
|
||||
updateStates = function() {
|
||||
var oc = options.classes,
|
||||
osc = options.selectors.container,
|
||||
old = $container.data('onSlide'),
|
||||
$all = $();
|
||||
|
||||
// Container state
|
||||
$container.removeClass(oc.onPrefix + old)
|
||||
.addClass(oc.onPrefix + current)
|
||||
.data('onSlide', current);
|
||||
|
||||
// Remove and re-add child-current classes for nesting
|
||||
$('.' + oc.current).parentsUntil(osc).removeClass(oc.childCurrent);
|
||||
slides[current].parentsUntil(osc).addClass(oc.childCurrent);
|
||||
|
||||
// Remove previous states
|
||||
$.each(slides, function(i, el) {
|
||||
$all = $all.add(el);
|
||||
});
|
||||
$all.removeClass([
|
||||
oc.before,
|
||||
oc.previous,
|
||||
oc.current,
|
||||
oc.next,
|
||||
oc.after
|
||||
].join(" "));
|
||||
|
||||
// Add new states back in
|
||||
slides[current].addClass(oc.current);
|
||||
if (current > 0) {
|
||||
slides[current-1].addClass(oc.previous);
|
||||
}
|
||||
if (current + 1 < slides.length) {
|
||||
slides[current+1].addClass(oc.next);
|
||||
}
|
||||
if (current > 1) {
|
||||
$.each(slides.slice(0, current - 1), function(i, el) {
|
||||
el.addClass(oc.before);
|
||||
});
|
||||
}
|
||||
if (current + 2 < slides.length) {
|
||||
$.each(slides.slice(current+2), function(i, el) {
|
||||
el.addClass(oc.after);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/* Methods exposed in the jQuery.deck namespace */
|
||||
methods = {
|
||||
|
||||
/*
|
||||
jQuery.deck(selector, options)
|
||||
|
||||
selector: string | jQuery | array
|
||||
options: object, optional
|
||||
|
||||
Initializes the deck, using each element matched by selector as a slide.
|
||||
May also be passed an array of string selectors or jQuery objects, in
|
||||
which case each selector in the array is considered a slide. The second
|
||||
parameter is an optional options object which will extend the default
|
||||
values.
|
||||
|
||||
$.deck('.slide');
|
||||
|
||||
or
|
||||
|
||||
$.deck([
|
||||
'#first-slide',
|
||||
'#second-slide',
|
||||
'#etc'
|
||||
]);
|
||||
*/
|
||||
init: function(elements, opts) {
|
||||
var startTouch,
|
||||
tolerance,
|
||||
esp = function(e) {
|
||||
e.stopPropagation();
|
||||
};
|
||||
|
||||
options = $.extend(true, {}, $[deck].defaults, opts);
|
||||
slides = [];
|
||||
current = 0;
|
||||
$container = $(options.selectors.container);
|
||||
tolerance = options.touch.swipeTolerance;
|
||||
|
||||
// Pre init event for preprocessing hooks
|
||||
$d.trigger(events.beforeInitialize);
|
||||
|
||||
// Hide the deck while states are being applied to kill transitions
|
||||
$container.addClass(options.classes.loading);
|
||||
|
||||
// Fill slides array depending on parameter type
|
||||
if ($.isArray(elements)) {
|
||||
$.each(elements, function(i, e) {
|
||||
slides.push($(e));
|
||||
});
|
||||
}
|
||||
else {
|
||||
$(elements).each(function(i, e) {
|
||||
slides.push($(e));
|
||||
});
|
||||
}
|
||||
|
||||
/* Remove any previous bindings, and rebind key events */
|
||||
$d.unbind('keydown.deck').bind('keydown.deck', function(e) {
|
||||
if (e.which === options.keys.next || $.inArray(e.which, options.keys.next) > -1) {
|
||||
methods.next();
|
||||
e.preventDefault();
|
||||
}
|
||||
else if (e.which === options.keys.previous || $.inArray(e.which, options.keys.previous) > -1) {
|
||||
methods.prev();
|
||||
e.preventDefault();
|
||||
}
|
||||
})
|
||||
/* Stop propagation of key events within editable elements */
|
||||
.undelegate('input, textarea, select, button, meter, progress, [contentEditable]', 'keydown', esp)
|
||||
.delegate('input, textarea, select, button, meter, progress, [contentEditable]', 'keydown', esp);
|
||||
|
||||
/* Bind touch events for swiping between slides on touch devices */
|
||||
$container.unbind('touchstart.deck').bind('touchstart.deck', function(e) {
|
||||
if (!startTouch) {
|
||||
startTouch = $.extend({}, e.originalEvent.targetTouches[0]);
|
||||
}
|
||||
})
|
||||
.unbind('touchmove.deck').bind('touchmove.deck', function(e) {
|
||||
$.each(e.originalEvent.changedTouches, function(i, t) {
|
||||
if (startTouch && t.identifier === startTouch.identifier) {
|
||||
if (t.screenX - startTouch.screenX > tolerance || t.screenY - startTouch.screenY > tolerance) {
|
||||
$[deck]('prev');
|
||||
startTouch = undefined;
|
||||
}
|
||||
else if (t.screenX - startTouch.screenX < -1 * tolerance || t.screenY - startTouch.screenY < -1 * tolerance) {
|
||||
$[deck]('next');
|
||||
startTouch = undefined;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
e.preventDefault();
|
||||
})
|
||||
.unbind('touchend.deck').bind('touchend.deck', function(t) {
|
||||
$.each(t.originalEvent.changedTouches, function(i, t) {
|
||||
if (startTouch && t.identifier === startTouch.identifier) {
|
||||
startTouch = undefined;
|
||||
}
|
||||
});
|
||||
})
|
||||
.scrollLeft(0).scrollTop(0);
|
||||
|
||||
/*
|
||||
Kick iframe videos, which dont like to redraw w/ transforms.
|
||||
Remove this if Webkit ever fixes it.
|
||||
*/
|
||||
$.each(slides, function(i, $el) {
|
||||
$el.unbind('webkitTransitionEnd.deck').bind('webkitTransitionEnd.deck',
|
||||
function(event) {
|
||||
if ($el.hasClass($[deck]('getOptions').classes.current)) {
|
||||
var embeds = $(this).find('iframe').css('opacity', 0);
|
||||
window.setTimeout(function() {
|
||||
embeds.css('opacity', 1);
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (slides.length) {
|
||||
updateStates();
|
||||
}
|
||||
|
||||
// Show deck again now that slides are in place
|
||||
$container.removeClass(options.classes.loading);
|
||||
$d.trigger(events.initialize);
|
||||
},
|
||||
|
||||
/*
|
||||
jQuery.deck('go', index)
|
||||
|
||||
index: integer | string
|
||||
|
||||
Moves to the slide at the specified index if index is a number. Index is
|
||||
0-based, so $.deck('go', 0); will move to the first slide. If index is a
|
||||
string this will move to the slide with the specified id. If index is out
|
||||
of bounds or doesn't match a slide id the call is ignored.
|
||||
*/
|
||||
go: function(index) {
|
||||
var e = $.Event(events.change),
|
||||
ndx;
|
||||
|
||||
/* Number index, easy. */
|
||||
if (typeof index === 'number' && index >= 0 && index < slides.length) {
|
||||
ndx = index;
|
||||
}
|
||||
/* Id string index, search for it and set integer index */
|
||||
else if (typeof index === 'string') {
|
||||
$.each(slides, function(i, $slide) {
|
||||
if ($slide.attr('id') === index) {
|
||||
ndx = i;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* Out of bounds, id doesn't exist, illegal input, eject */
|
||||
if (typeof ndx === 'undefined') return;
|
||||
|
||||
$d.trigger(e, [current, ndx]);
|
||||
if (e.isDefaultPrevented()) {
|
||||
/* Trigger the event again and undo the damage done by extensions. */
|
||||
$d.trigger(events.change, [ndx, current]);
|
||||
}
|
||||
else {
|
||||
current = ndx;
|
||||
updateStates();
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
jQuery.deck('next')
|
||||
|
||||
Moves to the next slide. If the last slide is already active, the call
|
||||
is ignored.
|
||||
*/
|
||||
next: function() {
|
||||
methods.go(current+1);
|
||||
},
|
||||
|
||||
/*
|
||||
jQuery.deck('prev')
|
||||
|
||||
Moves to the previous slide. If the first slide is already active, the
|
||||
call is ignored.
|
||||
*/
|
||||
prev: function() {
|
||||
methods.go(current-1);
|
||||
},
|
||||
|
||||
/*
|
||||
jQuery.deck('getSlide', index)
|
||||
|
||||
index: integer, optional
|
||||
|
||||
Returns a jQuery object containing the slide at index. If index is not
|
||||
specified, the current slide is returned.
|
||||
*/
|
||||
getSlide: function(index) {
|
||||
var i = typeof index !== 'undefined' ? index : current;
|
||||
if (typeof i != 'number' || i < 0 || i >= slides.length) return null;
|
||||
return slides[i];
|
||||
},
|
||||
|
||||
/*
|
||||
jQuery.deck('getSlides')
|
||||
|
||||
Returns all slides as an array of jQuery objects.
|
||||
*/
|
||||
getSlides: function() {
|
||||
return slides;
|
||||
},
|
||||
|
||||
/*
|
||||
jQuery.deck('getContainer')
|
||||
|
||||
Returns a jQuery object containing the deck container as defined by the
|
||||
container option.
|
||||
*/
|
||||
getContainer: function() {
|
||||
return $container;
|
||||
},
|
||||
|
||||
/*
|
||||
jQuery.deck('getOptions')
|
||||
|
||||
Returns the options object for the deck, including any overrides that
|
||||
were defined at initialization.
|
||||
*/
|
||||
getOptions: function() {
|
||||
return options;
|
||||
},
|
||||
|
||||
/*
|
||||
jQuery.deck('extend', name, method)
|
||||
|
||||
name: string
|
||||
method: function
|
||||
|
||||
Adds method to the deck namespace with the key of name. This doesn’t
|
||||
give access to any private member data — public methods must still be
|
||||
used within method — but lets extension authors piggyback on the deck
|
||||
namespace rather than pollute jQuery.
|
||||
|
||||
$.deck('extend', 'alert', function(msg) {
|
||||
alert(msg);
|
||||
});
|
||||
|
||||
// Alerts 'boom'
|
||||
$.deck('alert', 'boom');
|
||||
*/
|
||||
extend: function(name, method) {
|
||||
methods[name] = method;
|
||||
}
|
||||
};
|
||||
|
||||
/* jQuery extension */
|
||||
$[deck] = function(method, arg) {
|
||||
if (methods[method]) {
|
||||
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
||||
}
|
||||
else {
|
||||
return methods.init(method, arg);
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
The default settings object for a deck. All deck extensions should extend
|
||||
this object to add defaults for any of their options.
|
||||
|
||||
options.classes.after
|
||||
This class is added to all slides that appear after the 'next' slide.
|
||||
|
||||
options.classes.before
|
||||
This class is added to all slides that appear before the 'previous'
|
||||
slide.
|
||||
|
||||
options.classes.childCurrent
|
||||
This class is added to all elements in the DOM tree between the
|
||||
'current' slide and the deck container. For standard slides, this is
|
||||
mostly seen and used for nested slides.
|
||||
|
||||
options.classes.current
|
||||
This class is added to the current slide.
|
||||
|
||||
options.classes.loading
|
||||
This class is applied to the deck container during loading phases and is
|
||||
primarily used as a way to short circuit transitions between states
|
||||
where such transitions are distracting or unwanted. For example, this
|
||||
class is applied during deck initialization and then removed to prevent
|
||||
all the slides from appearing stacked and transitioning into place
|
||||
on load.
|
||||
|
||||
options.classes.next
|
||||
This class is added to the slide immediately following the 'current'
|
||||
slide.
|
||||
|
||||
options.classes.onPrefix
|
||||
This prefix, concatenated with the current slide index, is added to the
|
||||
deck container as you change slides.
|
||||
|
||||
options.classes.previous
|
||||
This class is added to the slide immediately preceding the 'current'
|
||||
slide.
|
||||
|
||||
options.selectors.container
|
||||
Elements matched by this CSS selector will be considered the deck
|
||||
container. The deck container is used to scope certain states of the
|
||||
deck, as with the onPrefix option, or with extensions such as deck.goto
|
||||
and deck.menu.
|
||||
|
||||
options.keys.next
|
||||
The numeric keycode used to go to the next slide.
|
||||
|
||||
options.keys.previous
|
||||
The numeric keycode used to go to the previous slide.
|
||||
|
||||
options.touch.swipeTolerance
|
||||
The number of pixels the users finger must travel to produce a swipe
|
||||
gesture.
|
||||
*/
|
||||
$[deck].defaults = {
|
||||
classes: {
|
||||
after: 'deck-after',
|
||||
before: 'deck-before',
|
||||
childCurrent: 'deck-child-current',
|
||||
current: 'deck-current',
|
||||
loading: 'deck-loading',
|
||||
next: 'deck-next',
|
||||
onPrefix: 'on-slide-',
|
||||
previous: 'deck-previous'
|
||||
},
|
||||
|
||||
selectors: {
|
||||
container: '.deck-container'
|
||||
},
|
||||
|
||||
keys: {
|
||||
// enter, space, page down, right arrow, down arrow,
|
||||
next: [13, 32, 34, 39, 40],
|
||||
// backspace, page up, left arrow, up arrow
|
||||
previous: [8, 33, 37, 38]
|
||||
},
|
||||
|
||||
touch: {
|
||||
swipeTolerance: 60
|
||||
}
|
||||
};
|
||||
|
||||
$d.ready(function() {
|
||||
$('html').addClass('ready');
|
||||
});
|
||||
|
||||
/*
|
||||
FF + Transforms + Flash video don't get along...
|
||||
Firefox will reload and start playing certain videos after a
|
||||
transform. Blanking the src when a previously shown slide goes out
|
||||
of view prevents this.
|
||||
*/
|
||||
$d.bind('deck.change', function(e, from, to) {
|
||||
var oldFrames = $[deck]('getSlide', from).find('iframe'),
|
||||
newFrames = $[deck]('getSlide', to).find('iframe');
|
||||
|
||||
oldFrames.each(function() {
|
||||
var $this = $(this),
|
||||
curSrc = $this.attr('src');
|
||||
|
||||
if(curSrc) {
|
||||
$this.data('deck-src', curSrc).attr('src', '');
|
||||
}
|
||||
});
|
||||
|
||||
newFrames.each(function() {
|
||||
var $this = $(this),
|
||||
originalSrc = $this.data('deck-src');
|
||||
|
||||
if (originalSrc) {
|
||||
$this.attr('src', originalSrc);
|
||||
}
|
||||
});
|
||||
});
|
||||
})(jQuery, 'deck', document);
|
450
git/core/deck.core.scss
Executable file
450
git/core/deck.core.scss
Executable file
|
@ -0,0 +1,450 @@
|
|||
html, body {
|
||||
height:100%;
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
body.deck-container {
|
||||
overflow-y:auto;
|
||||
position:static;
|
||||
}
|
||||
|
||||
.deck-container {
|
||||
position:relative;
|
||||
min-height:100%;
|
||||
margin:0 auto;
|
||||
padding:0 48px;
|
||||
font-size:16px;
|
||||
line-height:1.25;
|
||||
overflow:hidden;
|
||||
|
||||
.js & {
|
||||
visibility:hidden;
|
||||
}
|
||||
|
||||
.ready & {
|
||||
visibility:visible;
|
||||
}
|
||||
|
||||
.touch & {
|
||||
-webkit-text-size-adjust:none;
|
||||
-moz-text-size-adjust:none;
|
||||
}
|
||||
|
||||
/* Resets and base styles from HTML5 Boilerplate */
|
||||
div, span, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
|
||||
small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
quotes:none;
|
||||
|
||||
&:before, &:after {
|
||||
content:"";
|
||||
content:none;
|
||||
}
|
||||
}
|
||||
|
||||
ins {
|
||||
background-color:#ff9;
|
||||
color:#000;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
mark {
|
||||
background-color:#ff9;
|
||||
color:#000;
|
||||
font-style:italic;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
del {
|
||||
text-decoration:line-through;
|
||||
}
|
||||
|
||||
abbr[title], dfn[title] {
|
||||
border-bottom:1px dotted;
|
||||
cursor:help;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse:collapse;
|
||||
border-spacing:0;
|
||||
}
|
||||
|
||||
hr {
|
||||
display:block;
|
||||
height:1px;
|
||||
border:0;
|
||||
border-top:1px solid #ccc;
|
||||
margin:1em 0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
input, select {
|
||||
vertical-align:middle;
|
||||
}
|
||||
|
||||
select, input, textarea, button {
|
||||
font:99% sans-serif;
|
||||
}
|
||||
|
||||
pre, code, kbd, samp {
|
||||
font-family:monospace, sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
-webkit-tap-highlight-color:rgba(0,0,0,0);
|
||||
|
||||
&:hover, &:active {
|
||||
outline:none;
|
||||
}
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin-left:2em;
|
||||
vertical-align:top;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-type:decimal;
|
||||
}
|
||||
|
||||
nav {
|
||||
ul, li {
|
||||
margin:0;
|
||||
list-style:none;
|
||||
list-style-image:none;
|
||||
}
|
||||
}
|
||||
|
||||
small {
|
||||
font-size:85%;
|
||||
}
|
||||
|
||||
strong, th {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
td {
|
||||
vertical-align:top;
|
||||
}
|
||||
|
||||
sub, sup {
|
||||
font-size:75%;
|
||||
line-height:0;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
sup {
|
||||
top:-0.5em;
|
||||
}
|
||||
|
||||
sub { bottom: -0.25em; }
|
||||
|
||||
textarea {
|
||||
overflow:auto;
|
||||
}
|
||||
|
||||
legend {
|
||||
.ie6 &, .ie7 & {
|
||||
margin-left:-7px;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="radio"] {
|
||||
vertical-align:text-bottom;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
vertical-align:bottom;
|
||||
}
|
||||
|
||||
.ie7 & input[type="checkbox"] {
|
||||
vertical-align:baseline;
|
||||
}
|
||||
|
||||
.ie6 & input {
|
||||
vertical-align:text-bottom;
|
||||
}
|
||||
|
||||
label, input[type="button"], input[type="submit"], input[type="image"], button {
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
button, input, select, textarea {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input, textarea {
|
||||
&:invalid {
|
||||
border-radius:1px;
|
||||
-moz-box-shadow:0px 0px 5px red;
|
||||
-webkit-box-shadow:0px 0px 5px red;
|
||||
box-shadow: 0px 0px 5px red;
|
||||
|
||||
.no-boxshadow {
|
||||
background-color: #f0dddd;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
width:auto;
|
||||
overflow:visible;
|
||||
}
|
||||
|
||||
.ie7 & img {
|
||||
-ms-interpolation-mode: bicubic; }
|
||||
|
||||
&, select, input, textarea {
|
||||
color:#444;
|
||||
}
|
||||
|
||||
a {
|
||||
color:#607890;
|
||||
|
||||
&:hover, &:focus {
|
||||
color:#036;
|
||||
}
|
||||
|
||||
&:link {
|
||||
-webkit-tap-highlight-color: #fff;
|
||||
}
|
||||
}
|
||||
/* End HTML5 Boilerplate adaptations */
|
||||
|
||||
&.deck-loading {
|
||||
display:none;
|
||||
}
|
||||
}
|
||||
|
||||
.slide {
|
||||
width:auto;
|
||||
min-height:100%;
|
||||
position:relative;
|
||||
|
||||
h1 {
|
||||
font-size:4.5em;
|
||||
}
|
||||
|
||||
h1, .vcenter {
|
||||
font-weight:bold;
|
||||
text-align:center;
|
||||
padding-top:1em;
|
||||
max-height:100%;
|
||||
|
||||
.csstransforms & {
|
||||
padding:0 48px;
|
||||
position:absolute;
|
||||
left:0;
|
||||
right:0;
|
||||
top:50%;
|
||||
-webkit-transform:translate(0, -50%);
|
||||
-moz-transform:translate(0, -50%);
|
||||
-ms-transform:translate(0, -50%);
|
||||
-o-transform:translate(0, -50%);
|
||||
transform:translate(0, -50%);
|
||||
}
|
||||
}
|
||||
|
||||
.vcenter h1 {
|
||||
position:relative;
|
||||
top:auto;
|
||||
padding:0;
|
||||
-webkit-transform:none;
|
||||
-moz-transform:none;
|
||||
-ms-transform:none;
|
||||
-o-transform:none;
|
||||
transform:none;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size:2.25em;
|
||||
font-weight:bold;
|
||||
padding-top:.5em;
|
||||
margin:0 0 .66666em 0;
|
||||
border-bottom:3px solid #888;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size:1.4375em;
|
||||
font-weight:bold;
|
||||
margin-bottom:.30435em;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size:1.25em;
|
||||
font-weight:bold;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size:1.125em;
|
||||
font-weight:bold;
|
||||
margin-bottom:.2222em;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size:1em;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
img, iframe, video {
|
||||
display:block;
|
||||
max-width:100%;
|
||||
}
|
||||
|
||||
video, iframe, img {
|
||||
display:block;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
p, blockquote, iframe, img, ul, ol, pre, video {
|
||||
margin-bottom:1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space:pre;
|
||||
white-space:pre-wrap;
|
||||
word-wrap:break-word;
|
||||
padding: 1em;
|
||||
border:1px solid #888;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style:italic;
|
||||
}
|
||||
|
||||
li {
|
||||
padding:.25em 0;
|
||||
vertical-align:middle;
|
||||
}
|
||||
}
|
||||
|
||||
.deck-before, .deck-previous, .deck-next, .deck-after {
|
||||
position:absolute;
|
||||
left:-999em;
|
||||
top:-999em;
|
||||
}
|
||||
|
||||
.deck-current {
|
||||
z-index:2;
|
||||
}
|
||||
|
||||
.slide .slide {
|
||||
visibility:hidden;
|
||||
position:static;
|
||||
min-height:0;
|
||||
}
|
||||
|
||||
.deck-child-current {
|
||||
position:static;
|
||||
z-index:2;
|
||||
|
||||
.slide {
|
||||
visibility:hidden;
|
||||
}
|
||||
|
||||
.deck-previous, .deck-before, .deck-current {
|
||||
visibility:visible;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (orientation:portrait) {
|
||||
|
||||
}
|
||||
|
||||
@media all and (orientation:landscape) {
|
||||
|
||||
}
|
||||
|
||||
@media screen and (max-device-width: 480px) {
|
||||
|
||||
/* html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
|
||||
}
|
||||
|
||||
|
||||
@media print {
|
||||
* {
|
||||
background: transparent !important;
|
||||
color: black !important;
|
||||
text-shadow: none !important;
|
||||
filter:none !important;
|
||||
-ms-filter: none !important;
|
||||
-webkit-box-reflect:none !important;
|
||||
-moz-box-reflect:none !important;
|
||||
-webkit-box-shadow:none !important;
|
||||
-moz-box-shadow:none !important;
|
||||
box-shadow:none !important;
|
||||
|
||||
:before, :after {
|
||||
display:none !important;
|
||||
}
|
||||
}
|
||||
a, a:visited { color: #444 !important; text-decoration: underline; }
|
||||
a[href]:after { content: " (" attr(href) ")"; }
|
||||
abbr[title]:after { content: " (" attr(title) ")"; }
|
||||
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
|
||||
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
|
||||
thead { display: table-header-group; }
|
||||
tr, img { page-break-inside: avoid; }
|
||||
@page { margin: 0.5cm; }
|
||||
p, h2, h3 { orphans: 3; widows: 3; }
|
||||
h2, h3{ page-break-after: avoid; }
|
||||
|
||||
.slide {
|
||||
position:static !important;
|
||||
visibility:visible !important;
|
||||
display:block !important;
|
||||
-webkit-transform:none !important;
|
||||
-moz-transform:none !important;
|
||||
-o-transform:none !important;
|
||||
-ms-transform:none !important;
|
||||
transform:none !important;
|
||||
opacity:1 !important;
|
||||
}
|
||||
|
||||
h1, .vcenter {
|
||||
-webkit-transform:none !important;
|
||||
-moz-transform:none !important;
|
||||
-o-transform:none !important;
|
||||
-ms-transform:none !important;
|
||||
transform:none !important;
|
||||
padding:0 !important;
|
||||
position:static !important;
|
||||
}
|
||||
|
||||
.deck-container > .slide {
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
.deck-container {
|
||||
width:100% !important;
|
||||
height:auto !important;
|
||||
padding:0 !important;
|
||||
display:block !important;
|
||||
}
|
||||
|
||||
script {
|
||||
display:none;
|
||||
}
|
||||
}
|
Reference in a new issue