diff --git a/jquery.scrollintoview.js b/jquery.scrollintoview.js index 2f7049e..87d6746 100644 --- a/jquery.scrollintoview.js +++ b/jquery.scrollintoview.js @@ -9,7 +9,16 @@ * http://www.opensource.org/licenses/mit-license.php */ -(function ($) { +!function(root, factory) { + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (typeof exports === 'object') { + factory(require('jquery')); + } else { + factory(root.jQuery); + } +} +(this, function ($) { var converter = { vertical: { x: false, y: true }, horizontal: { x: true, y: false }, @@ -205,4 +214,4 @@ return direction.y && size.scrollableY() || direction.x && size.scrollableX(); } }); -})(jQuery); +}); diff --git a/jquery.scrollintoview.min.js b/jquery.scrollintoview.min.js index b1a4b6f..8df539a 100644 --- a/jquery.scrollintoview.min.js +++ b/jquery.scrollintoview.min.js @@ -8,4 +8,4 @@ * Licensed under the terms of the MIT license * http://www.opensource.org/licenses/mit-license.php */ -(function(f){var c={vertical:{x:false,y:true},horizontal:{x:true,y:false},both:{x:true,y:true},x:{x:true,y:false},y:{x:false,y:true}};var b={duration:"fast",direction:"both"};var e=/^(?:html)$/i;var g=function(k,j){j=j||(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(k,null):k.currentStyle);var i=document.defaultView&&document.defaultView.getComputedStyle?true:false;var h={top:(parseFloat(i?j.borderTopWidth:f.css(k,"borderTopWidth"))||0),left:(parseFloat(i?j.borderLeftWidth:f.css(k,"borderLeftWidth"))||0),bottom:(parseFloat(i?j.borderBottomWidth:f.css(k,"borderBottomWidth"))||0),right:(parseFloat(i?j.borderRightWidth:f.css(k,"borderRightWidth"))||0)};return{top:h.top,left:h.left,bottom:h.bottom,right:h.right,vertical:h.top+h.bottom,horizontal:h.left+h.right}};var d=function(h){var j=f(window);var i=e.test(h[0].nodeName);return{border:i?{top:0,left:0,bottom:0,right:0}:g(h[0]),scroll:{top:(i?j:h).scrollTop(),left:(i?j:h).scrollLeft()},scrollbar:{right:i?0:h.innerWidth()-h[0].clientWidth,bottom:i?0:h.innerHeight()-h[0].clientHeight},rect:(function(){var k=h[0].getBoundingClientRect();return{top:i?0:k.top,left:i?0:k.left,bottom:i?h[0].clientHeight:k.bottom,right:i?h[0].clientWidth:k.right}})()}};f.fn.extend({scrollintoview:function(j){j=f.extend({},b,j);j.direction=c[typeof(j.direction)==="string"&&j.direction.toLowerCase()]||c.both;var n="";if(j.direction.x===true){n="horizontal"}if(j.direction.y===true){n=n?"both":"vertical"}var l=this.eq(0);var i=l.closest(":scrollable("+n+")");if(i.length>0){i=i.eq(0);var m={e:d(l),s:d(i)};var h={top:m.e.rect.top-(m.s.rect.top+m.s.border.top),bottom:m.s.rect.bottom-m.s.border.bottom-m.s.scrollbar.bottom-m.e.rect.bottom,left:m.e.rect.left-(m.s.rect.left+m.s.border.left),right:m.s.rect.right-m.s.border.right-m.s.scrollbar.right-m.e.rect.right};var k={};if(j.direction.y===true){if(h.top<0){k.scrollTop=m.s.scroll.top+h.top}else{if(h.top>0&&h.bottom<0){k.scrollTop=m.s.scroll.top+Math.min(h.top,-h.bottom)}}}if(j.direction.x===true){if(h.left<0){k.scrollLeft=m.s.scroll.left+h.left}else{if(h.left>0&&h.right<0){k.scrollLeft=m.s.scroll.left+Math.min(h.left,-h.right)}}}if(!f.isEmptyObject(k)){if(e.test(i[0].nodeName)){i=f("html,body")}i.animate(k,j.duration).eq(0).queue(function(o){f.isFunction(j.complete)&&j.complete.call(i[0]);o()})}else{f.isFunction(j.complete)&&j.complete.call(i[0])}}return this}});var a={auto:true,scroll:true,visible:false,hidden:false};f.extend(f.expr[":"],{scrollable:function(k,i,n,h){var m=c[typeof(n[3])==="string"&&n[3].toLowerCase()]||c.both;var l=(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(k,null):k.currentStyle);var o={x:a[l.overflowX.toLowerCase()]||false,y:a[l.overflowY.toLowerCase()]||false,isRoot:e.test(k.nodeName)};if(!o.x&&!o.y&&!o.isRoot){return false}var j={height:{scroll:k.scrollHeight,client:k.clientHeight},width:{scroll:k.scrollWidth,client:k.clientWidth},scrollableX:function(){return(o.x||o.isRoot)&&this.width.scroll>this.width.client},scrollableY:function(){return(o.y||o.isRoot)&&this.height.scroll>this.height.client}};return m.y&&j.scrollableY()||m.x&&j.scrollableX()}})})(jQuery); +!function(e,t){if(typeof define==="function"&&define.amd){define(["jquery"],t)}else if(typeof exports==="object"){t(require("jquery"))}else{t(e.jQuery)}}(this,function(e){var t={vertical:{x:false,y:true},horizontal:{x:true,y:false},both:{x:true,y:true},x:{x:true,y:false},y:{x:false,y:true}};var n={duration:"fast",direction:"both"};var r=/^(?:html)$/i;var i=function(t,n){n=n||(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(t,null):t.currentStyle);var r=document.defaultView&&document.defaultView.getComputedStyle?true:false;var i={top:parseFloat(r?n.borderTopWidth:e.css(t,"borderTopWidth"))||0,left:parseFloat(r?n.borderLeftWidth:e.css(t,"borderLeftWidth"))||0,bottom:parseFloat(r?n.borderBottomWidth:e.css(t,"borderBottomWidth"))||0,right:parseFloat(r?n.borderRightWidth:e.css(t,"borderRightWidth"))||0};return{top:i.top,left:i.left,bottom:i.bottom,right:i.right,vertical:i.top+i.bottom,horizontal:i.left+i.right}};var s=function(t){var n=e(window);var s=r.test(t[0].nodeName);return{border:s?{top:0,left:0,bottom:0,right:0}:i(t[0]),scroll:{top:(s?n:t).scrollTop(),left:(s?n:t).scrollLeft()},scrollbar:{right:s?0:t.innerWidth()-t[0].clientWidth,bottom:s?0:t.innerHeight()-t[0].clientHeight},rect:function(){var e=t[0].getBoundingClientRect();return{top:s?0:e.top,left:s?0:e.left,bottom:s?t[0].clientHeight:e.bottom,right:s?t[0].clientWidth:e.right}}()}};e.fn.extend({scrollintoview:function(i){i=e.extend({},n,i);i.direction=t[typeof i.direction==="string"&&i.direction.toLowerCase()]||t.both;var o="";if(i.direction.x===true)o="horizontal";if(i.direction.y===true)o=o?"both":"vertical";var u=this.eq(0);var a=u.closest(":scrollable("+o+")");if(a.length>0){a=a.eq(0);var f={e:s(u),s:s(a)};var l={top:f.e.rect.top-(f.s.rect.top+f.s.border.top),bottom:f.s.rect.bottom-f.s.border.bottom-f.s.scrollbar.bottom-f.e.rect.bottom,left:f.e.rect.left-(f.s.rect.left+f.s.border.left),right:f.s.rect.right-f.s.border.right-f.s.scrollbar.right-f.e.rect.right};var c={};if(i.direction.y===true){if(l.top<0){c.scrollTop=f.s.scroll.top+l.top}else if(l.top>0&&l.bottom<0){c.scrollTop=f.s.scroll.top+Math.min(l.top,-l.bottom)}}if(i.direction.x===true){if(l.left<0){c.scrollLeft=f.s.scroll.left+l.left}else if(l.left>0&&l.right<0){c.scrollLeft=f.s.scroll.left+Math.min(l.left,-l.right)}}if(!e.isEmptyObject(c)){if(r.test(a[0].nodeName)){a=e("html,body")}a.animate(c,i.duration).eq(0).queue(function(t){e.isFunction(i.complete)&&i.complete.call(a[0]);t()})}else{e.isFunction(i.complete)&&i.complete.call(a[0])}}return this}});var o={auto:true,scroll:true,visible:false,hidden:false};e.extend(e.expr[":"],{scrollable:function(e,n,i,s){var u=t[typeof i[3]==="string"&&i[3].toLowerCase()]||t.both;var a=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(e,null):e.currentStyle;var f={x:o[a.overflowX.toLowerCase()]||false,y:o[a.overflowY.toLowerCase()]||false,isRoot:r.test(e.nodeName)};if(!f.x&&!f.y&&!f.isRoot){return false}var l={height:{scroll:e.scrollHeight,client:e.clientHeight},width:{scroll:e.scrollWidth,client:e.clientWidth},scrollableX:function(){return(f.x||f.isRoot)&&this.width.scroll>this.width.client},scrollableY:function(){return(f.y||f.isRoot)&&this.height.scroll>this.height.client}};return u.y&&l.scrollableY()||u.x&&l.scrollableX()}})})