?? moo.fx.js
字號:
return queryString.join('&'); }});var Drag = {};Drag.Base = new Class({ setOptions: function(options){ this.options = Object.extend({ handle: false, unit: 'px', onStart: Class.empty, onComplete: Class.empty, onDrag: Class.empty, xMax: false, xMin: false, yMax: false, yMin: false }, options || {}); }, initialize: function(el, xModifier, yModifier, options){ this.setOptions(options); this.element = $(el); this.handle = $(this.options.handle) || this.element; if (xModifier) this.xp = xModifier.camelCase(); if (yModifier) this.yp = yModifier.camelCase(); this.handle.onmousedown = this.start.bind(this); }, start: function(evt){ evt = evt || window.event; this.startX = evt.clientX; this.startY = evt.clientY; this.handleX = this.startX - this.handle.getLeft(); this.handleY = this.startY - this.handle.getTop(); this.set(evt); this.options.onStart.pass(this.element, this).delay(10); document.onmousemove = this.drag.bind(this); document.onmouseup = this.end.bind(this); return false; }, addStyles: function(x, y){ if (this.xp){ var stylex = this.element.getStyle(this.xp).toInt(); var movex = function(val){ this.element.setStyle(this.xp, val+this.options.unit); }.bind(this); if (this.options.xMax && stylex >= this.options.xMax){ if (this.clientX <= this.handleX+this.handle.getLeft()) movex(stylex+x); if (stylex > this.options.xMax) movex(this.options.xMax); } else if(this.options.xMin && stylex <= this.options.xMin){ if (this.clientX >= this.handleX+this.handle.getLeft()) movex(stylex+x); if (stylex < this.options.xMin) movex(this.options.xMin); } else movex(stylex+x); } if (this.yp){ var styley = this.element.getStyle(this.yp).toInt(); var movey = function(val){ this.element.setStyle(this.yp, val+this.options.unit); }.bind(this); if (this.options.yMax && styley >= this.options.yMax){ if (this.clientY <= this.handleY+this.handle.getTop()) movey(styley+y); if (styley > this.options.yMax) movey(this.options.yMax); } else if(this.options.yMin && styley <= this.options.yMin){ if (this.clientY >= this.handleY+this.handle.getTop()) movey(styley+y); if (styley < this.options.yMin) movey(this.options.yMin); } else movey(styley+y); } }, drag: function(evt){ evt = evt || window.event; this.clientX = evt.clientX; this.clientY = evt.clientY; this.options.onDrag.pass(this.element, this).delay(5); this.addStyles((this.clientX-this.lastMouseX), (this.clientY-this.lastMouseY)); this.set(evt); return false; }, set: function(evt){ this.lastMouseX = evt.clientX; this.lastMouseY = evt.clientY; return false; }, end: function(){ document.onmousemove = null; document.onmouseup = null; this.options.onComplete.pass(this.element, this).delay(10); }});Drag.Move = Drag.Base.extend({ extendOptions: function(options){ this.options = Object.extend(this.options || {}, Object.extend({ onSnap: Class.empty, droppables: [], snapDistance: 8, snap: true, xModifier: 'left', yModifier: 'top', container: false }, options || {})); }, initialize: function(el, options){ this.extendOptions(options); this.container = $(this.options.container); this.parent(el, this.options.xModifier, this.options.yModifier, this.options); }, start: function(evt){ if (this.options.container) { var cont = $(this.options.container).getPosition(); Object.extend(this.options, { xMax: cont.right-this.element.offsetWidth, xMin: cont.left, yMax: cont.bottom-this.element.offsetHeight, yMin: cont.top }); } this.parent(evt); if (this.options.snap) document.onmousemove = this.checkAndDrag.bind(this); return false; }, drag: function(evt){ this.parent(evt); this.options.droppables.each(function(drop){ if (this.checkAgainst(drop)){ if (drop.onOver && !drop.dropping) drop.onOver.pass([this.element, this], drop).delay(10); drop.dropping = true; } else { if (drop.onLeave && drop.dropping) drop.onLeave.pass([this.element, this], drop).delay(10); drop.dropping = false; } }, this); return false; }, checkAndDrag: function(evt){ evt = evt || window.event; var distance = Math.round(Math.sqrt(Math.pow(evt.clientX - this.startX, 2)+Math.pow(evt.clientY - this.startY, 2))); if (distance > this.options.snapDistance){ this.set(evt); this.options.onSnap.pass(this.element, this).delay(10); document.onmousemove = this.drag.bind(this); this.addStyles(-(this.startX-evt.clientX), -(this.startY-evt.clientY)); } return false; }, checkAgainst: function(el){ x = this.clientX+Window.getScrollLeft(); y = this.clientY+Window.getScrollTop(); var el = $(el).getPosition(); return (x > el.left && x < el.right && y < el.bottom && y > el.top); }, end: function(){ this.parent(); this.options.droppables.each(function(drop){ if (drop.onDrop && this.checkAgainst(drop)) drop.onDrop.pass([this.element, this], drop).delay(10); }, this); }});Element.extend({ makeDraggable: function(options){ return new Drag.Move(this, options); }, makeResizable: function(options){ return new Drag.Base(this, 'width', 'height', options); }, getPosition: function(){ var obj = {}; obj.width = this.offsetWidth; obj.height = this.offsetHeight; obj.left = this.getLeft(); obj.top = this.getTop(); obj.right = obj.left + obj.width; obj.bottom = obj.top + obj.height; return obj; }});var Window = { disableImageCache: function(){ if (window.ActiveXObject) document.execCommand("BackgroundImageCache", false, true); }, extend: Object.extend, getWidth: function(){ return window.innerWidth || document.documentElement.clientWidth || 0; }, getHeight: function(){ return window.innerHeight || document.documentElement.clientHeight || 0; }, getScrollHeight: function(){ return document.documentElement.scrollHeight; }, getScrollWidth: function(){ return document.documentElement.scrollWidth; }, getScrollTop: function(){ return document.documentElement.scrollTop || window.pageYOffset || 0; }, getScrollLeft: function(){ return document.documentElement.scrollLeft || window.pageXOffset || 0; }, onDomReady: function(init){ var state = document.readyState; if (state && document.childNodes && !document.all && !navigator.taintEnabled){ //khtml if (state.test(/loaded|complete/)) return init(); else return Window.onDomReady.pass(init).delay(100); } else if (state && window.ActiveXObject){ //ie var script = $('_ie_ready_'); if (!script) document.write("<script id='_ie_ready_' defer='true' src='://'></script>"); $('_ie_ready_').addEvent('readystatechange', function(){ if (this.readyState == 'complete') init(); }); return; } else { //others var myInit = function() { if (arguments.callee.done) return; arguments.callee.done = true; init(); }; window.addEvent("load", myInit); document.addEvent("DOMContentLoaded", myInit); } }};var Cookie = { set: function(key, value, duration){ var date = new Date(); date.setTime(date.getTime()+((duration || 365)*86400000)); document.cookie = key+"="+value+"; expires="+date.toGMTString()+"; path=/"; }, get: function(key){ var myValue, myVal; document.cookie.split(';').each(function(cookie){ if(myVal = cookie.trim().test(key+'=(.*)')) myValue = myVal[1]; }); return myValue; }, remove: function(key){ this.set(key, '', -1); }};var Json = { toString: function(el){ var string = []; var isArray = function(array){ var string = []; array.each(function(ar){ string.push(Json.toString(ar)); }); return string.join(','); }; var isObject = function(object){ var string = []; for (var property in object) string.push('"'+property+'":'+Json.toString(object[property])); return string.join(','); }; switch($type(obj)){ case 'number': string.push(obj); break; case 'string': string.push('"'+obj+'"'); break; case 'function': string.push(obj); break; case 'object': string.push('{'+isObject(obj)+'}'); break; case 'array': string.push('['+isArray(obj)+']'); } return string.join(','); }, evaluate: function(str){ return eval('(' + str + ')'); }};var Sortables = new Class({ setOptions: function(options) { this.options = { handles: false, fxDuration: 250, fxTransition: Fx.Transitions.sineInOut, maxOpacity: 0.5, onComplete: Class.empty, onStart: Class.empty, contain: false }; Object.extend(this.options, options || {}); }, initialize: function(elements, options){ this.setOptions(options); this.options.handles = this.options.handles || elements; var trash = new Element('div').injectInside($(document.body)); $A(elements).each(function(el, i){ var copy = $(el).clone().setStyles({ 'position': 'absolute', 'opacity': '0', 'display': 'none' }).injectInside(trash); var elEffect = el.effect('opacity', { duration: this.options.fxDuration, wait: false, transition: this.options.fxTransition }).set(1); var copyEffects = copy.effects({ duration: this.options.fxDuration, wait: false, transition: this.options.fxTransition, onComplete: function(){ copy.setStyle('display', 'none'); } }); var yMax = false; var yMin = false; if (this.options.contain){ yMax = $(el.parentNode).getTop()+el.parentNode.offsetHeight-el.offsetHeight; yMin = el.parentNode.getTop(); } var dragger = new Drag.Move(copy, { handle: this.options.handles[i], yMax: yMax, yMin: yMin, xModifier: false, onStart: function(){ this.options.onStart.bind(this).delay(10); copy.setHTML(el.innerHTML).setStyles({ 'display': 'block', 'opacity': this.options.maxOpacity, 'top': el.getTop()+'px', 'left': el.getLeft()+'px' }); elEffect.custom(elEffect.now, this.options.maxOpacity); }.bind(this), onComplete: function(){ this.options.onComplete.bind(this).delay(10); copyEffects.custom({ 'opacity': [this.options.maxOpacity, 0], 'top': [copy.getTop(), el.getTop()] }); elEffect.custom(elEffect.now, 1); }.bind(this), onDrag: function(){ if (el.getPrevious() && copy.getTop() < (el.getPrevious().getTop())) el.injectBefore(el.getPrevious()); else if (el.getNext() && copy.getTop() > (el.getNext().getTop())) el.injectAfter(el.getNext()); } }); }, this); }});Fx.Scroll = Fx.Base.extend({ initialize: function(el, options) { this.element = $(el); this.setOptions(options); }, down: function(){ return this.custom(this.element.scrollTop, this.element.scrollHeight-this.element.offsetHeight); }, up: function(){ return this.custom(this.element.scrollTop, 0); }, increase: function(){ this.element.scrollTop = this.now; }});Fx.Slide = Fx.Base.extend({ initialize: function(el, options){ this.element = $(el); this.wrapper = new Element('div').injectAfter(this.element).setStyle('overflow', 'hidden').adopt(this.element); this.setOptions(options); if (!this.options.mode) this.options.mode = 'vertical'; this.now = []; }, setNow: function(){ [0,1].each(function(i){ this.now[i] = this.compute(this.from[i], this.to[i]); }, this); }, vertical: function(){ this.margin = 'top'; this.layout = 'height'; this.startPosition = [this.element.scrollHeight, '0']; this.endPosition = ['0', -this.element.scrollHeight]; return this; }, horizontal: function(){ this.margin = 'left'; this.layout = 'width'; this.startPosition = [this.element.scrollWidth, '0']; this.endPosition = ['0', -this.element.scrollWidth]; return this; },
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -