📁 PHP Dosya Yöneticisi
/
/
home
/
demodesigncom
/
matba.demodesign.com.tr
/
public
/
assets
/
slippry
📝
slippry.js
← Geri Dön
/** @preserve * * slippry v1.4.0 - Responsive content slider for jQuery * http://slippry.com * * Authors: Lukas Jakob Hafner - @saftsaak * Thomas Hurd - @SeenNotHurd * * Copyright 2016, booncon oy - http://booncon.com * * * Released under the MIT license - http://opensource.org/licenses/MIT */ (function ($) { "use strict"; var defaults; defaults = { // general elements & wrapper slippryWrapper: '<div class="sy-box" />', // wrapper to wrap everything, including pager slideWrapper: '<div class="sy-slides-wrap" />', // wrapper to wrap sildes & controls slideCrop: '<div class="sy-slides-crop" />', //additional wrapper around just the slides boxClass: 'sy-list', // class that goes to original element elements: 'li', // elments cointaining slide content activeClass: 'sy-active', // class for current slide fillerClass: 'sy-filler', // class for element that acts as intrinsic placholder loadingClass: 'sy-loading', // options adaptiveHeight: true, // height of the sliders adapts to current slide start: 1, // num (starting from 1), random loop: true, // first -> last & last -> first arrows captionsSrc: 'img', // img, el [img takes caption from alt or title, el from title of slide element] captions: 'overlay', // Position: overlay, below, custom, false captionsEl: '.sy-caption', // $ selector for captions wrapper initSingle: true, // initialise even if there is only one slide responsive: true, preload: 'visible', // visible, all | resources to wait for until showing slider // pager pager: true, pagerClass: 'sy-pager', // controls controls: true, controlClass: 'sy-controls', prevClass: 'sy-prev', prevText: 'Previous', nextClass: 'sy-next', nextText: 'Next', hideOnEnd: true, // transitions transition: 'fade', // fade, horizontal, vertical, kenburns, false kenZoom: 120, // max zoom for kenburns (in %) slideMargin: 0, // spacing between slides (in %) transClass: 'transition', // [Class applied to [element] while a transition is taking place.] speed: 800, // time the transition takes (ms) easing: 'swing', // easing to use in the animation [(see... [jquery www])] continuous: true, // seamless first/ last transistion, only works with loop useCSS: true, // true, false -> fallback to js if no browser support //slideshow auto: true, autoDirection: 'next', autoHover: true, autoHoverDelay: 100, autoDelay: 500, pause: 4000, // callback functions onSliderLoad: function () { // when slider loaded return this; }, onSlideBefore: function () { // before page transition starts return this; }, onSlideAfter: function () { // after page transition happened return this; } }; $.fn.slippry = function (options) { var slip, el, prepareFiller, getFillerProportions, init, updateCaption, initPager, initControls, ready, transitionDone, whichTransitionEvent, initCaptions, updatePager, setFillerProportions, doTransition, updateSlide, openSlide, updateControls, updatePos, supports, preload, start, elFromSel, doKens; // reference to the object calling the function el = this; // if no elements just stop if (el.length === 0) { return this; } // support mutltiple elements if (el.length > 1) { el.each(function () { $(this).slippry(options); }); return this; } // variable to access the slider settings across the plugin slip = {}; slip.vars = {}; whichTransitionEvent = function () { // Thanks! http://stackoverflow.com/a/18672988 var t, div, transitions; div = document.createElement('div'); transitions = { 'WebkitTransition' : 'webkitTransitionEnd', 'MozTransition' : 'transitionend', 'MSTransition' : 'msTransitionEnd', 'OTransition' : 'oTransitionEnd', 'transition' : 'transitionEnd transitionend' }; for (t in transitions) { if (div.style[t] !== undefined) { return transitions[t]; } } }; supports = (function () { // Thanks! http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-detect-css-support-in-browsers-with-javascript/ var div = document.createElement('div'), vendors = ['Khtml', 'Ms', 'O', 'Moz', 'Webkit'], len = vendors.length; return function (prop) { if (prop in div.style) { return true; } prop = prop.replace(/^[a-z]/, function (val) { return val.toUpperCase(); }); while (len--) { if (vendors[len] + prop in div.style) { return true; } } return false; }; }()); elFromSel = function (sel, prop) { var props, newelement, id, className; props = prop.split('.'); newelement = $(sel); id = ''; className = ''; $.each(props, function (i, val) { if (val.indexOf('#') >= 0) { id += val.replace(/^#/, ''); } else { className += val + ' '; } }); if (id.length) { newelement.attr('id', id); } if (className.length) { newelement.attr('class', $.trim(className)); } return newelement; }; doKens = function () { var kenStart, kenTime, animProp, cssProp; animProp = {}; cssProp = {}; kenStart = 100 - slip.settings.kenZoom; cssProp.width = slip.settings.kenZoom + '%'; if (slip.vars.active.index() % 2 === 0) { cssProp.left = kenStart + '%'; cssProp.top = kenStart + '%'; animProp.left = '0%'; animProp.top = '0%'; } else { cssProp.left = '0%'; cssProp.top = '0%'; animProp.left = kenStart + '%'; animProp.top = kenStart + '%'; } kenTime = slip.settings.pause + slip.settings.speed * 2; slip.vars.active.css(cssProp); slip.vars.active.animate(animProp, {duration: kenTime, easing: slip.settings.easing, queue: false}); }; ready = function () { if (slip.vars.fresh) { slip.vars.slippryWrapper.removeClass(slip.settings.loadingClass); slip.vars.fresh = false; if (slip.settings.auto) { el.startAuto(); } if (!slip.settings.useCSS && slip.settings.transition === 'kenburns') { doKens(); } slip.settings.onSliderLoad.call(undefined, slip.vars.active.index()); } else { $('.' + slip.settings.fillerClass, slip.vars.slideWrapper).addClass('ready'); } }; setFillerProportions = function (width, height) { var ratio, p_top, $filler; ratio = width / height; p_top = 1 / ratio * 100 + '%'; //cool intrinsic trick: http://alistapart.com/article/creating-intrinsic-ratios-for-video $filler = $('.' + slip.settings.fillerClass, slip.vars.slideWrapper); $filler.css({paddingTop: p_top}); // resizing without the need of js, true responsiveness :) ready(); }; // gets the aspect ratio of the filler element getFillerProportions = function ($slide) { var width, height; if (($('img', $slide).attr("src") !== undefined)) { $("<img />").on("load", function () { width = $slide.width(); height = $slide.height(); setFillerProportions(width, height); }).attr("src", $('img', $slide).attr("src")); } else { width = $slide.width(); height = $slide.height(); setFillerProportions(width, height); } }; // prepares a div to occupy the needed space prepareFiller = function () { if ($('.' + slip.settings.fillerClass, slip.vars.slideWrapper).length === 0) { slip.vars.slideWrapper.append($('<div class="' + slip.settings.fillerClass + '" />')); } if (slip.settings.adaptiveHeight === true) { // if the slides shoud alwas adapt to their content getFillerProportions($('.' + slip.settings.activeClass, el)); // set the filler height on the active element } else { // otherwise get the highest element var $highest, height, loop; height = 0; loop = 0; $(slip.vars.slides).each(function () { if ($(this).height() > height) { $highest = $(this); height = $highest.height(); } loop = loop + 1; if (loop === slip.vars.count) { if ($highest === undefined) { $highest = $($(slip.vars.slides)[0]); } getFillerProportions($highest); } }); } }; updatePager = function () { if (slip.settings.pager) { $('.' + slip.settings.pagerClass + ' li', slip.vars.slippryWrapper).removeClass(slip.settings.activeClass); $($('.' + slip.settings.pagerClass + ' li', slip.vars.slippryWrapper)[slip.vars.active.index()]).addClass(slip.settings.activeClass); } }; updateControls = function () { if (!slip.settings.loop && slip.settings.hideOnEnd) { $('.' + slip.settings.prevClass, slip.vars.slippryWrapper)[slip.vars.first ? 'hide' : 'show'](); $('.' + slip.settings.nextClass, slip.vars.slippryWrapper)[slip.vars.last ? 'hide' : 'show'](); } }; updateCaption = function () { var caption, wrapper; if (slip.settings.captions !== false) { if (slip.settings.captionsSrc !== 'img') { caption = slip.vars.active.attr('title'); } else { caption = $('img', slip.vars.active).attr('title') !== undefined ? $('img', slip.vars.active).attr('title') : $('img', slip.vars.active).attr('alt'); } if (slip.settings.captions !== 'custom') { wrapper = $(slip.settings.captionsEl, slip.vars.slippryWrapper); } else { wrapper = $(slip.settings.captionsEl); } if ((caption !== undefined) && (caption !== '')) { wrapper.html(caption).show(); } else { wrapper.hide(); } } }; el.startAuto = function () { if ((slip.vars.timer === undefined) && (slip.vars.delay === undefined)) { slip.vars.delay = window.setTimeout(function () { slip.vars.autodelay = false; slip.vars.timer = window.setInterval(function () { slip.vars.trigger = 'auto'; openSlide(slip.settings.autoDirection); }, slip.settings.pause); }, slip.vars.autodelay ? slip.settings.autoHoverDelay : slip.settings.autoDelay); if (slip.settings.autoHover) { slip.vars.slideWrapper.unbind('mouseenter').unbind('mouseleave').bind('mouseenter', function () { if (slip.vars.timer !== undefined) { slip.vars.hoverStop = true; el.stopAuto(); } else { slip.vars.hoverStop = false; } }).bind('mouseleave', function () { if (slip.vars.hoverStop) { slip.vars.autodelay = true; el.startAuto(); } }); } } }; el.stopAuto = function () { window.clearInterval(slip.vars.timer); slip.vars.timer = undefined; window.clearTimeout(slip.vars.delay); slip.vars.delay = undefined; }; // refreshes the already initialised slider el.refresh = function () { slip.vars.slides.removeClass(slip.settings.activeClass); slip.vars.active.addClass(slip.settings.activeClass); if (slip.settings.responsive) { prepareFiller(); } else { ready(); } updateControls(); updatePager(); updateCaption(); }; updateSlide = function () { el.refresh(); }; transitionDone = function () { slip.vars.moving = false; slip.vars.active.removeClass(slip.settings.transClass); if (!slip.vars.fresh) { slip.vars.old.removeClass('sy-ken'); } slip.vars.old.removeClass(slip.settings.transClass); slip.settings.onSlideAfter.call(undefined, slip.vars.active, slip.vars.old.index(), slip.vars.active.index()); if (slip.settings.auto) { if (!slip.vars.hoverStop || slip.vars.hoverStop === undefined){ el.startAuto(); } } }; doTransition = function () { var pos, jump, old_left, old_pos, kenTime, ref, cssProp; slip.settings.onSlideBefore.call(undefined, slip.vars.active, slip.vars.old.index(), slip.vars.active.index()); if (slip.settings.transition !== false) { slip.vars.moving = true; if ((slip.settings.transition === 'fade') || (slip.settings.transition === 'kenburns')) { if (slip.vars.fresh) { if (slip.settings.useCSS) { slip.vars.slides.css({transitionDuration: slip.settings.speed + 'ms', opacity: 0}); } else { slip.vars.slides.css({opacity: 0}); } slip.vars.active.css('opacity', 1); if (slip.settings.transition === 'kenburns') { if (slip.settings.useCSS) { kenTime = slip.settings.pause + slip.settings.speed * 2; slip.vars.slides.css({animationDuration: kenTime + 'ms'}); slip.vars.active.addClass('sy-ken'); } } transitionDone(); } else { if (slip.settings.useCSS) { slip.vars.old.addClass(slip.settings.transClass).css('opacity', 0); slip.vars.active.addClass(slip.settings.transClass).css('opacity', 1); if (slip.settings.transition === 'kenburns') { slip.vars.active.addClass('sy-ken'); } $(window).off('focus').on('focus', function () { // bugfix for safari 7 which doesn't always trigger ontransitionend when switching tab if (slip.vars.moving) { slip.vars.old.trigger(slip.vars.transition); } }); slip.vars.old.one(slip.vars.transition, function () { transitionDone(); return this; }); } else { if (slip.settings.transition === 'kenburns') { doKens(); } slip.vars.old.addClass(slip.settings.transClass).animate({ opacity: 0 }, slip.settings.speed, slip.settings.easing, function () { transitionDone(); }); slip.vars.active.addClass(slip.settings.transClass).css('opacity', 0).animate({ opacity: 1 }, slip.settings.speed, slip.settings.easing); } } updateSlide(); } else if ((slip.settings.transition === 'horizontal') || (slip.settings.transition === 'vertical')) { ref = (slip.settings.transition === 'horizontal') ? 'left' : 'top'; pos = '-' + slip.vars.active.index() * (100 + slip.settings.slideMargin) + '%'; if (slip.vars.fresh) { el.css(ref, pos); transitionDone(); } else { cssProp = {}; if (slip.settings.continuous) { if (slip.vars.jump && ((slip.vars.trigger === 'controls') || (slip.vars.trigger === 'auto'))) { jump = true; old_pos = pos; if (slip.vars.first) { old_left = 0; slip.vars.active.css(ref, slip.vars.count * (100 + slip.settings.slideMargin) + '%'); pos = '-' + slip.vars.count * (100 + slip.settings.slideMargin) + '%'; } else { old_left = (slip.vars.count - 1) * (100 + slip.settings.slideMargin) + '%'; slip.vars.active.css(ref, -(100 + slip.settings.slideMargin) + '%'); pos = (100 + slip.settings.slideMargin) + '%'; } } } slip.vars.active.addClass(slip.settings.transClass); if (slip.settings.useCSS) { cssProp[ref] = pos; cssProp.transitionDuration = slip.settings.speed + 'ms'; el.addClass(slip.settings.transition); el.css(cssProp); $(window).off('focus').on('focus', function () { // bugfix for safari 7 which doesn't always trigger ontransitionend when switching tab if (slip.vars.moving) { el.trigger(slip.vars.transition); } }); el.one(slip.vars.transition, function () { el.removeClass(slip.settings.transition); if (jump) { slip.vars.active.css(ref, old_left); cssProp[ref] = old_pos; cssProp.transitionDuration = '0ms'; el.css(cssProp); } transitionDone(); return this; }); } else { cssProp[ref] = pos; el.stop().animate(cssProp, slip.settings.speed, slip.settings.easing, function () { if (jump) { slip.vars.active.css(ref, old_left); el.css(ref, old_pos); } transitionDone(); return this; }); } } updateSlide(); } } else { updateSlide(); transitionDone(); } }; updatePos = function (slide) { slip.vars.first = slip.vars.last = false; if ((slide === 'prev') || (slide === 0)) { slip.vars.first = true; } else if ((slide === 'next') || (slide === slip.vars.count - 1)) { slip.vars.last = true; } }; openSlide = function (slide) { var current, direction; if (!slip.vars.moving) { if (slip.vars.trigger !== 'auto') { el.stopAuto(); } current = slip.vars.active.index(); if (slide === 'prev') { direction = slide; if (current > 0) { slide = current - 1; } else if (slip.settings.loop) { slide = slip.vars.count - 1; } } else if (slide === 'next') { direction = slide; if (current < slip.vars.count - 1) { slide = current + 1; } else if (slip.settings.loop) { slide = 0; } } else { slide = slide - 1; direction = slide < current ? 'prev' : 'next'; } slip.vars.jump = false; if ((slide !== 'prev') && (slide !== 'next') && ((slide !== current) || (slip.vars.fresh))) { updatePos(slide); slip.vars.old = slip.vars.active; slip.vars.active = $(slip.vars.slides[slide]); if (((current === 0) && (direction === 'prev')) || ((current === slip.vars.count - 1) && (direction === 'next'))) { slip.vars.jump = true; } doTransition(); } } }; el.goToSlide = function (slide) { slip.vars.trigger = 'external'; openSlide(slide); }; el.goToNextSlide = function () { slip.vars.trigger = 'external'; openSlide('next'); }; el.goToPrevSlide = function () { slip.vars.trigger = 'external'; openSlide('prev'); }; initPager = function () { if ((slip.settings.pager) && (slip.vars.count > 1)) { var count, loop, pager; count = slip.vars.slides.length; pager = $('<ul class="' + slip.settings.pagerClass + '" />'); for (loop = 1; loop < count + 1; loop = loop + 1) { pager.append($('<li />').append($('<a href="#' + loop + '">' + loop + '</a>'))); } slip.vars.slippryWrapper.append(pager); $('.' + slip.settings.pagerClass + ' a', slip.vars.slippryWrapper).click(function () { slip.vars.trigger = 'pager'; openSlide(parseInt(this.hash.split('#')[1], 10)); return false; }); updatePager(); } }; initControls = function () { if ((slip.settings.controls) && (slip.vars.count > 1)) { slip.vars.slideWrapper.append( $('<ul class="' + slip.settings.controlClass + '" />') .append('<li class="' + slip.settings.prevClass + '"><a href="#prev">' + slip.settings.prevText + '</a></li>') .append('<li class="' + slip.settings.nextClass + '"><a href="#next">' + slip.settings.nextText + '</a></li>') ); $('.' + slip.settings.controlClass + ' a', slip.vars.slippryWrapper).click(function () { slip.vars.trigger = 'controls'; openSlide(this.hash.split('#')[1]); return false; }); updateControls(); } }; initCaptions = function () { if (slip.settings.captions !== false) { if (slip.settings.captions === 'overlay') { slip.vars.slideWrapper.append($('<div class="sy-caption-wrap" />').html(elFromSel('<div />', slip.settings.captionsEl))); } else if (slip.settings.captions === 'below') { slip.vars.slippryWrapper.append($('<div class="sy-caption-wrap" />').html(elFromSel('<div />', slip.settings.captionsEl))); } } }; // actually show the first slide start = function () { openSlide(slip.vars.active.index() + 1); }; // wait for images, iframes to be loaded preload = function (slides) { var count, loop, elements, container; container = (slip.settings.preload === 'all') ? slides : slip.vars.active; elements = $('img, iframe', container); count = elements.length; if (count === 0) { start(); return; } loop = 0; elements.each(function () { $(this).one('load error', function () { if (++loop === count) { start(); } }).each(function () { if (this.complete) { $(this).trigger('load'); } }); }); }; el.getCurrentSlide = function () { return slip.vars.active; }; el.getSlideCount = function () { return slip.vars.count; }; el.destroySlider = function () { if (slip.vars.fresh === false) { el.stopAuto(); slip.vars.moving = false; slip.vars.slides.each(function () { if ($(this).data("sy-cssBckup") !== undefined) { $(this).attr("style", $(this).data("sy-cssBckup")); } else { $(this).removeAttr('style'); } if ($(this).data("sy-classBckup") !== undefined) { $(this).attr("class", $(this).data("sy-classBckup")); } else { $(this).removeAttr('class'); } }); if (el.data("sy-cssBckup") !== undefined) { el.attr("style", el.data("sy-cssBckup")); } else { el.removeAttr('style'); } if (el.data("sy-classBckup") !== undefined) { el.attr("class", el.data("sy-classBckup")); } else { el.removeAttr('class'); } slip.vars.slippryWrapper.before(el); slip.vars.slippryWrapper.remove(); slip.vars.fresh = undefined; } }; el.reloadSlider = function () { el.destroySlider(); init(); }; // initialises the slider, creates needed markup init = function () { var first; slip.settings = $.extend({}, defaults, options); slip.vars.slides = $(slip.settings.elements, el); slip.vars.count = slip.vars.slides.length; if (slip.settings.useCSS) { // deactivate css transitions on unsupported browsers if (!supports('transition')) { slip.settings.useCSS = false; } slip.vars.transition = whichTransitionEvent(); } el.data('sy-cssBckup', el.attr('style')); el.data('sy-classBackup', el.attr('class')); el.addClass(slip.settings.boxClass).wrap(slip.settings.slippryWrapper).wrap(slip.settings.slideWrapper).wrap(slip.settings.slideCrop); slip.vars.slideWrapper = el.parent().parent(); slip.vars.slippryWrapper = slip.vars.slideWrapper.parent().addClass(slip.settings.loadingClass); slip.vars.fresh = true; slip.vars.slides.each(function () { $(this).addClass('sy-slide ' + slip.settings.transition); if (slip.settings.useCSS) { $(this).addClass('useCSS'); } if (slip.settings.transition === 'horizontal') { $(this).css('left', $(this).index() * (100 + slip.settings.slideMargin) + '%'); } else if (slip.settings.transition === 'vertical') { $(this).css('top', $(this).index() * (100 + slip.settings.slideMargin) + '%'); } }); if ((slip.vars.count > 1) || (slip.settings.initSingle)) { if ($('.' + slip.settings.activeClass, el).index() === -1) { if (slip.settings.start === 'random') { first = Math.round(Math.random() * (slip.vars.count - 1)); } else if (slip.settings.start > 0 && slip.settings.start <= slip.vars.count) { first = slip.settings.start - 1; } else { first = 0; } slip.vars.active = $(slip.vars.slides[first]).addClass(slip.settings.activeClass); } else { slip.vars.active = $('.' + slip.settings.activeClass, el); } initControls(); initPager(); initCaptions(); preload(slip.vars.slides); } else { return this; } }; init(); // on startup initialise the slider return this; }; }(jQuery));
💾 Kaydet
İptal
📝 Yeniden Adlandır
İptal
Kaydet
🔐 Dosya İzinleri (chmod)
İzin Değeri:
Hızlı Seçim:
777
755
644
600
777
= Herkes okur/yazar/çalıştırır
755
= Sahip tam, diğerleri okur/çalıştırır
644
= Sahip okur/yazar, diğerleri okur
600
= Sadece sahip okur/yazar
İptal
Uygula