Файловый менеджер - Редактировать - /home/digitalm/birramastro/wp-content/plugins/responsive-lightbox/assets/slippry/slippry.js
Назад
/** @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', className.trim() ); } 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.off( 'mouseenter' ).off( 'mouseleave' ).on( 'mouseenter', function () { if ( slip.vars.timer !== undefined ) { slip.vars.hoverStop = true; el.stopAuto(); } else { slip.vars.hoverStop = false; } } ).on( '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 ).on( '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 ).on( '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 ) );
| ver. 1.4 |
Github
|
.
| PHP 8.3.23 | Генерация страницы: 0.07 |
proxy
|
phpinfo
|
Настройка