mirror of
https://github.com/quentin-g-dev/afup.git
synced 2026-03-24 17:22:06 +01:00
157 lines
6.3 KiB
JavaScript
157 lines
6.3 KiB
JavaScript
/* =========================================================
|
||
|
||
// jquery.innerfade.js
|
||
// Datum: 2008-02-14
|
||
// Firma: Medienfreunde Hofmann & Baldes GbR
|
||
// Author: Torsten Baldes
|
||
// Mail: t.baldes@medienfreunde.com
|
||
// Web: http://medienfreunde.com
|
||
|
||
// based on the work of Matt Oakes http://portfolio.gizone.co.uk/applications/slideshow/
|
||
// and Ralf S. Engelschall http://trainofthoughts.org/
|
||
|
||
*
|
||
* <ul id="news">
|
||
* <li>content 1</li>
|
||
* <li>content 2</li>
|
||
* <li>content 3</li>
|
||
* </ul>
|
||
*
|
||
* $('#news').innerfade({
|
||
* animationtype: Type of animation 'fade' or 'slide' (Default: 'fade'),
|
||
* speed: Fading-/Sliding-Speed in milliseconds or keywords (slow, normal or fast) (Default: 'normal'),
|
||
* timeout: Time between the fades in milliseconds (Default: '2000'),
|
||
* type: Type of slideshow: 'sequence', 'random' or 'random_start' (Default: 'sequence'),
|
||
* containerheight: Height of the containing element in any css-height-value (Default: 'auto'),
|
||
* runningclass: CSS-Class which the container get’s applied (Default: 'innerfade'),
|
||
* children: optional children selector (Default: null)
|
||
* });
|
||
*
|
||
|
||
// ========================================================= */
|
||
(function ($) {
|
||
|
||
$.fn.innerfade = function (options) {
|
||
return this.each(function () {
|
||
$.innerfade(this, options);
|
||
});
|
||
};
|
||
|
||
$.innerfade = function (container, options) {
|
||
var settings = {
|
||
'animationtype': 'fade',
|
||
'speed': 'slow',
|
||
'type': 'sequence',
|
||
'timeout': 1000,
|
||
'containerheight': 'auto',
|
||
'runningclass': 'innerfade',
|
||
'children': null
|
||
};
|
||
if (options) $.extend(settings, options);
|
||
if (settings.children === null) var elements = $(container).children();
|
||
else var elements = $(container).children(settings.children);
|
||
if (elements.length > 1) {
|
||
$(container).css('height', settings.containerheight);
|
||
for (var i = 0; i < elements.length; i++) {
|
||
$(elements[i]).css('z-index', String(elements.length - i)).hide();
|
||
};
|
||
if (settings.type == "sequence") {
|
||
setTimeout(function () {
|
||
$.innerfade.next(elements, settings, 1, 0);
|
||
}, settings.timeout);
|
||
$(elements[0]).show();
|
||
} else if (settings.type == "random") {
|
||
var last = Math.floor(Math.random() * (elements.length));
|
||
setTimeout(function () {
|
||
do {
|
||
current = Math.floor(Math.random() * (elements.length));
|
||
} while (last == current);
|
||
$.innerfade.next(elements, settings, current, last);
|
||
}, settings.timeout);
|
||
$(elements[last]).show();
|
||
} else if (settings.type == 'random_start') {
|
||
settings.type = 'sequence';
|
||
var current = Math.floor(Math.random() * (elements.length));
|
||
setTimeout(function () {
|
||
$.innerfade.next(elements, settings, (current + 1) % elements.length, current);
|
||
}, settings.timeout);
|
||
$(elements[current]).show();
|
||
} else {
|
||
alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');
|
||
}
|
||
}
|
||
};
|
||
|
||
$.innerfade.next = function (elements, settings, current, last) {
|
||
if (settings.animationtype == 'slide') {
|
||
$(elements[last]).slideUp(settings.speed);
|
||
$(elements[current]).slideDown(settings.speed);
|
||
if (settings.type == "sequence") {
|
||
if ((current + 1) < elements.length) {
|
||
current = current + 1;
|
||
last = current - 1;
|
||
} else {
|
||
current = 0;
|
||
last = elements.length - 1;
|
||
}
|
||
} else if (settings.type == "random") {
|
||
last = current;
|
||
do {
|
||
current = Math.floor(Math.random() * (elements.length));
|
||
} while (last == current);
|
||
$("#help").html($("#help").html() + '<br/>' + last + '=>' + current);
|
||
} else alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');
|
||
setTimeout((function () {
|
||
$.innerfade.next(elements, settings, current, last);
|
||
}), settings.timeout);
|
||
} else if (settings.animationtype == 'fade') {
|
||
$(elements[last]).fadeOut(settings.speed, function () {
|
||
$(elements[last]).hide();
|
||
$(elements[current]).fadeIn(settings.speed, function () {
|
||
removeFilter($(this)[0]);
|
||
});
|
||
if (settings.type == "sequence") {
|
||
if ((current + 1) < elements.length) {
|
||
current = current + 1;
|
||
last = current - 1;
|
||
} else {
|
||
current = 0;
|
||
last = elements.length - 1;
|
||
}
|
||
} else if (settings.type == "random") {
|
||
last = current;
|
||
do {
|
||
current = Math.floor(Math.random() * (elements.length));
|
||
} while (last == current);
|
||
} else alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');
|
||
setTimeout((function () {
|
||
$.innerfade.next(elements, settings, current, last);
|
||
}), settings.timeout);
|
||
});
|
||
} else alert('Innerfade-animationtype must either be \'slide\' or \'fade\'');
|
||
};
|
||
|
||
})(jQuery);
|
||
|
||
// **** remove Opacity-Filter in ie ****
|
||
function removeFilter(element) {
|
||
if (element.style.removeAttribute) {
|
||
element.style.removeAttribute('filter');
|
||
}
|
||
}
|
||
|
||
|
||
$(document).ready(function () {
|
||
$('.fade').innerfade({
|
||
speed: 'slow',
|
||
timeout: 2000,
|
||
type: 'sequence',
|
||
containerheight: '140px'
|
||
}).css('opacity', '1').css('padding-left', '15px');
|
||
$('.fadelarge').innerfade({
|
||
speed: 'slow',
|
||
timeout: 2000,
|
||
type: 'sequence',
|
||
containerheight: '140px'
|
||
}).css('opacity', '1').css('padding-left', '15px');
|
||
}); |