diff options
Diffstat (limited to 'javascript/jquery/plugins/zoom/jquery.zoom.js')
| -rw-r--r-- | javascript/jquery/plugins/zoom/jquery.zoom.js | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/javascript/jquery/plugins/zoom/jquery.zoom.js b/javascript/jquery/plugins/zoom/jquery.zoom.js deleted file mode 100644 index 235eecb..0000000 --- a/javascript/jquery/plugins/zoom/jquery.zoom.js +++ /dev/null @@ -1,235 +0,0 @@ -/*! - Zoom 1.7.20 - license: MIT - http://www.jacklmoore.com/zoom -*/ -(function ($) { - var defaults = { - url: false, - callback: false, - target: false, - duration: 120, - on: 'mouseover', // other options: grab, click, toggle - touch: true, // enables a touch fallback - onZoomIn: false, - onZoomOut: false, - magnify: 1 - }; - - // Core Zoom Logic, independent of event listeners. - $.zoom = function(target, source, img, magnify) { - var targetHeight, - targetWidth, - sourceHeight, - sourceWidth, - xRatio, - yRatio, - offset, - $target = $(target), - position = $target.css('position'), - $source = $(source); - - // The parent element needs positioning so that the zoomed element can be correctly positioned within. - target.style.position = /(absolute|fixed)/.test(position) ? position : 'relative'; - target.style.overflow = 'hidden'; - img.style.width = img.style.height = ''; - - $(img) - .addClass('zoomImg') - .css({ - position: 'absolute', - top: 0, - left: 0, - opacity: 0, - width: img.width * magnify, - height: img.height * magnify, - border: 'none', - maxWidth: 'none', - maxHeight: 'none' - }) - .appendTo(target); - - return { - init: function() { - targetWidth = $target.outerWidth(); - targetHeight = $target.outerHeight(); - - if (source === target) { - sourceWidth = targetWidth; - sourceHeight = targetHeight; - } else { - sourceWidth = $source.outerWidth(); - sourceHeight = $source.outerHeight(); - } - - xRatio = (img.width - targetWidth) / sourceWidth; - yRatio = (img.height - targetHeight) / sourceHeight; - - offset = $source.offset(); - }, - move: function (e) { - var left = (e.pageX - offset.left), - top = (e.pageY - offset.top); - - top = Math.max(Math.min(top, sourceHeight), 0); - left = Math.max(Math.min(left, sourceWidth), 0); - - img.style.left = (left * -xRatio) + 'px'; - img.style.top = (top * -yRatio) + 'px'; - } - }; - }; - - $.fn.zoom = function (options) { - return this.each(function () { - var - settings = $.extend({}, defaults, options || {}), - //target will display the zoomed image - target = settings.target && $(settings.target)[0] || this, - //source will provide zoom location info (thumbnail) - source = this, - $source = $(source), - img = document.createElement('img'), - $img = $(img), - mousemove = 'mousemove.zoom', - clicked = false, - touched = false; - - // If a url wasn't specified, look for an image element. - if (!settings.url) { - var srcElement = source.querySelector('img'); - if (srcElement) { - settings.url = srcElement.getAttribute('data-src') || srcElement.currentSrc || srcElement.src; - } - if (!settings.url) { - return; - } - } - - $source.one('zoom.destroy', function(position, overflow){ - $source.off(".zoom"); - target.style.position = position; - target.style.overflow = overflow; - img.onload = null; - $img.remove(); - }.bind(this, target.style.position, target.style.overflow)); - - img.onload = function () { - var zoom = $.zoom(target, source, img, settings.magnify); - - function start(e) { - zoom.init(); - zoom.move(e); - - // Skip the fade-in for IE8 and lower since it chokes on fading-in - // and changing position based on mousemovement at the same time. - $img.stop() - .fadeTo($.support.opacity ? settings.duration : 0, 1, $.isFunction(settings.onZoomIn) ? settings.onZoomIn.call(img) : false); - } - - function stop() { - $img.stop() - .fadeTo(settings.duration, 0, $.isFunction(settings.onZoomOut) ? settings.onZoomOut.call(img) : false); - } - - // Mouse events - if (settings.on === 'grab') { - $source - .on('mousedown.zoom', - function (e) { - if (e.which === 1) { - $(document).one('mouseup.zoom', - function () { - stop(); - - $(document).off(mousemove, zoom.move); - } - ); - - start(e); - - $(document).on(mousemove, zoom.move); - - e.preventDefault(); - } - } - ); - } else if (settings.on === 'click') { - $source.on('click.zoom', - function (e) { - if (clicked) { - // bubble the event up to the document to trigger the unbind. - return; - } else { - clicked = true; - start(e); - $(document).on(mousemove, zoom.move); - $(document).one('click.zoom', - function () { - stop(); - clicked = false; - $(document).off(mousemove, zoom.move); - } - ); - return false; - } - } - ); - } else if (settings.on === 'toggle') { - $source.on('click.zoom', - function (e) { - if (clicked) { - stop(); - } else { - start(e); - } - clicked = !clicked; - } - ); - } else if (settings.on === 'mouseover') { - zoom.init(); // Preemptively call init because IE7 will fire the mousemove handler before the hover handler. - - $source - .on('mouseenter.zoom', start) - .on('mouseleave.zoom', stop) - .on(mousemove, zoom.move); - } - - // Touch fallback - if (settings.touch) { - $source - .on('touchstart.zoom', function (e) { - e.preventDefault(); - if (touched) { - touched = false; - stop(); - } else { - touched = true; - start( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] ); - } - }) - .on('touchmove.zoom', function (e) { - e.preventDefault(); - zoom.move( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] ); - }) - .on('touchend.zoom', function (e) { - e.preventDefault(); - if (touched) { - touched = false; - stop(); - } - }); - } - - if ($.isFunction(settings.callback)) { - settings.callback.call(img); - } - }; - - img.setAttribute('role', 'presentation'); - img.src = settings.url; - }); - }; - - $.fn.zoom.defaults = defaults; -}(window.jQuery)); |
