⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mootools-1.2-more.js.svn-base

📁 自己找的mootools中文文档
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2008 Valerio Proietti, <http://mad4milk.net>, MIT Style License./*
Script: Fx.Slide.js
	Effect to slide an element in and out of view.

License:
	MIT-style license.
*/

Fx.Slide = new Class({

	Extends: Fx,

	options: {
		mode: 'vertical'
	},

	initialize: function(element, options){
		this.addEvent('complete', function(){
			this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);
			if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);
		}, true);
		this.element = this.subject = $(element);
		this.parent(options);
		var wrapper = this.element.retrieve('wrapper');
		this.wrapper = wrapper || new Element('div', {
			styles: $extend(this.element.getStyles('margin', 'position'), {'overflow': 'hidden'})
		}).wraps(this.element);
		this.element.store('wrapper', this.wrapper).setStyle('margin', 0);
		this.now = [];
		this.open = true;
	},

	vertical: function(){
		this.margin = 'margin-top';
		this.layout = 'height';
		this.offset = this.element.offsetHeight;
	},

	horizontal: function(){
		this.margin = 'margin-left';
		this.layout = 'width';
		this.offset = this.element.offsetWidth;
	},

	set: function(now){
		this.element.setStyle(this.margin, now[0]);
		this.wrapper.setStyle(this.layout, now[1]);
		return this;
	},

	compute: function(from, to, delta){
		var now = [];
		var x = 2;
		x.times(function(i){
			now[i] = Fx.compute(from[i], to[i], delta);
		});
		return now;
	},

	start: function(how, mode){
		if (!this.check(arguments.callee, how, mode)) return this;
		this[mode || this.options.mode]();
		var margin = this.element.getStyle(this.margin).toInt();
		var layout = this.wrapper.getStyle(this.layout).toInt();
		var caseIn = [[margin, layout], [0, this.offset]];
		var caseOut = [[margin, layout], [-this.offset, 0]];
		var start;
		switch (how){
			case 'in': start = caseIn; break;
			case 'out': start = caseOut; break;
			case 'toggle': start = (this.wrapper['offset' + this.layout.capitalize()] == 0) ? caseIn : caseOut;
		}
		return this.parent(start[0], start[1]);
	},

	slideIn: function(mode){
		return this.start('in', mode);
	},

	slideOut: function(mode){
		return this.start('out', mode);
	},

	hide: function(mode){
		this[mode || this.options.mode]();
		this.open = false;
		return this.set([-this.offset, 0]);
	},

	show: function(mode){
		this[mode || this.options.mode]();
		this.open = true;
		return this.set([0, this.offset]);
	},

	toggle: function(mode){
		return this.start('toggle', mode);
	}

});

Element.Properties.slide = {

	set: function(options){
		var slide = this.retrieve('slide');
		if (slide) slide.cancel();
		return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));
	},
	
	get: function(options){
		if (options || !this.retrieve('slide')){
			if (options || !this.retrieve('slide:options')) this.set('slide', options);
			this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));
		}
		return this.retrieve('slide');
	}

};

Element.implement({

	slide: function(how, mode){
		how = how || 'toggle';
		var slide = this.get('slide'), toggle;
		switch (how){
			case 'hide': slide.hide(mode); break;
			case 'show': slide.show(mode); break;
			case 'toggle':
				var flag = this.retrieve('slide:flag', slide.open);
				slide[(flag) ? 'slideOut' : 'slideIn'](mode);
				this.store('slide:flag', !flag);
				toggle = true;
			break;
			default: slide.start(how, mode);
		}
		if (!toggle) this.eliminate('slide:flag');
		return this;
	}

});
/*Script: Fx.Scroll.js	Effect to smoothly scroll any element, including the window.License:	MIT-style license.*/Fx.Scroll = new Class({	Extends: Fx,	options: {		offset: {'x': 0, 'y': 0},		wheelStops: true	},	initialize: function(element, options){		this.element = this.subject = $(element);		this.parent(options);		var cancel = this.cancel.bind(this, false);		if ($type(this.element) != 'element') this.element = $(this.element.getDocument().body);		var stopper = this.element;		if (this.options.wheelStops){			this.addEvent('start', function(){				stopper.addEvent('mousewheel', cancel);			}, true);			this.addEvent('complete', function(){				stopper.removeEvent('mousewheel', cancel);			}, true);		}	},	set: function(){		var now = Array.flatten(arguments);		this.element.scrollTo(now[0], now[1]);	},	compute: function(from, to, delta){		var now = [];		var x = 2;		x.times(function(i){			now.push(Fx.compute(from[i], to[i], delta));		});		return now;	},	start: function(x, y){		if (!this.check(arguments.callee, x, y)) return this;		var offsetSize = this.element.getSize(), scrollSize = this.element.getScrollSize();		var scroll = this.element.getScroll(), values = {x: x, y: y};		for (var z in values){			var max = scrollSize[z] - offsetSize[z];			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z].limit(0, max) : max;			else values[z] = scroll[z];			values[z] += this.options.offset[z];		}		return this.parent([scroll.x, scroll.y], [values.x, values.y]);	},	toTop: function(){		return this.start(false, 0);	},	toLeft: function(){		return this.start(0, false);	},	toRight: function(){		return this.start('right', false);	},	toBottom: function(){		return this.start(false, 'bottom');	},	toElement: function(el){		var position = $(el).getPosition(this.element);		return this.start(position.x, position.y);	}});/*Script: Fx.Elements.js	Effect to change any number of CSS properties of any number of Elements.License:	MIT-style license.*/Fx.Elements = new Class({	Extends: Fx.CSS,	initialize: function(elements, options){		this.elements = this.subject = $$(elements);		this.parent(options);	},	compute: function(from, to, delta){		var now = {};		for (var i in from){			var iFrom = from[i], iTo = to[i], iNow = now[i] = {};			for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);		}		return now;	},	set: function(now){		for (var i in now){			var iNow = now[i];			for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);		}		return this;	},	start: function(obj){		if (!this.check(arguments.callee, obj)) return this;		var from = {}, to = {};		for (var i in obj){			var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};			for (var p in iProps){				var parsed = this.prepare(this.elements[i], p, iProps[p]);				iFrom[p] = parsed.from;				iTo[p] = parsed.to;			}		}		return this.parent(from, to);	}});/*Script: Drag.js	The base Drag Class. Can be used to drag and resize Elements using mouse events.License:	MIT-style license.*/var Drag = new Class({	Implements: [Events, Options],	options: {/*		onBeforeStart: $empty,		onStart: $empty,		onDrag: $empty,		onCancel: $empty,		onComplete: $empty,*/		snap: 6,		unit: 'px',		grid: false,		style: true,		limit: false,		handle: false,		invert: false,		preventDefault: false,		modifiers: {x: 'left', y: 'top'}	},	initialize: function(){		var params = Array.link(arguments, {'options': Object.type, 'element': $defined});		this.element = $(params.element);		this.document = this.element.getDocument();		this.setOptions(params.options || {});		var htype = $type(this.options.handle);		this.handles = (htype == 'array' || htype == 'collection') ? $$(this.options.handle) : $(this.options.handle) || this.element;		this.mouse = {'now': {}, 'pos': {}};		this.value = {'start': {}, 'now': {}};				this.selection = (Browser.Engine.trident) ? 'selectstart' : 'mousedown';				this.bound = {			start: this.start.bind(this),			check: this.check.bind(this),			drag: this.drag.bind(this),			stop: this.stop.bind(this),			cancel: this.cancel.bind(this),			eventStop: $lambda(false)		};		this.attach();	},	attach: function(){		this.handles.addEvent('mousedown', this.bound.start);		return this;	},	detach: function(){		this.handles.removeEvent('mousedown', this.bound.start);		return this;	},	start: function(event){		if (this.options.preventDefault) event.preventDefault();		this.fireEvent('beforeStart', this.element);		this.mouse.start = event.page;		var limit = this.options.limit;		this.limit = {'x': [], 'y': []};		for (var z in this.options.modifiers){			if (!this.options.modifiers[z]) continue;			if (this.options.style) this.value.now[z] = this.element.getStyle(this.options.modifiers[z]).toInt();			else this.value.now[z] = this.element[this.options.modifiers[z]];			if (this.options.invert) this.value.now[z] *= -1;			this.mouse.pos[z] = event.page[z] - this.value.now[z];			if (limit && limit[z]){				for (var i = 2; i--; i){					if ($chk(limit[z][i])) this.limit[z][i] = $lambda(limit[z][i])();				}			}		}		if ($type(this.options.grid) == 'number') this.options.grid = {'x': this.options.grid, 'y': this.options.grid};		this.document.addEvents({mousemove: this.bound.check, mouseup: this.bound.cancel});		this.document.addEvent(this.selection, this.bound.eventStop);	},	check: function(event){		if (this.options.preventDefault) event.preventDefault();		var distance = Math.round(Math.sqrt(Math.pow(event.page.x - this.mouse.start.x, 2) + Math.pow(event.page.y - this.mouse.start.y, 2)));		if (distance > this.options.snap){			this.cancel();			this.document.addEvents({				mousemove: this.bound.drag,				mouseup: this.bound.stop			});			this.fireEvent('start', this.element).fireEvent('snap', this.element);		}	},	drag: function(event){		if (this.options.preventDefault) event.preventDefault();		this.mouse.now = event.page;		for (var z in this.options.modifiers){			if (!this.options.modifiers[z]) continue;			this.value.now[z] = this.mouse.now[z] - this.mouse.pos[z];			if (this.options.invert) this.value.now[z] *= -1;			if (this.options.limit && this.limit[z]){				if ($chk(this.limit[z][1]) && (this.value.now[z] > this.limit[z][1])){					this.value.now[z] = this.limit[z][1];				} else if ($chk(this.limit[z][0]) && (this.value.now[z] < this.limit[z][0])){					this.value.now[z] = this.limit[z][0];				}			}			if (this.options.grid[z]) this.value.now[z] -= (this.value.now[z] % this.options.grid[z]);			if (this.options.style) this.element.setStyle(this.options.modifiers[z], this.value.now[z] + this.options.unit);			else this.element[this.options.modifiers[z]] = this.value.now[z];		}		this.fireEvent('drag', this.element);	},	cancel: function(event){		this.document.removeEvent('mousemove', this.bound.check);		this.document.removeEvent('mouseup', this.bound.cancel);		if (event){			this.document.removeEvent(this.selection, this.bound.eventStop);			this.fireEvent('cancel', this.element);		}	},	stop: function(event){		this.document.removeEvent(this.selection, this.bound.eventStop);		this.document.removeEvent('mousemove', this.bound.drag);		this.document.removeEvent('mouseup', this.bound.stop);		if (event) this.fireEvent('complete', this.element);	}});Element.implement({		makeResizable: function(options){		return new Drag(this, $merge({modifiers: {'x': 'width', 'y': 'height'}}, options));	}});/*Script: Drag.Move.js	A Drag extension that provides support for the constraining of draggables to containers and droppables.License:	MIT-style license.*/Drag.Move = new Class({	Extends: Drag,	options: {		droppables: [],		container: false	},	initialize: function(element, options){		this.parent(element, options);		this.droppables = $$(this.options.droppables);		this.container = $(this.options.container);		if (this.container && $type(this.container) != 'element') this.container = $(this.container.getDocument().body);		element = this.element;				var current = element.getStyle('position');		var position = (current != 'static') ? current : 'absolute';		if (element.getStyle('left') == 'auto' || element.getStyle('top') == 'auto') element.position(element.getPosition(element.offsetParent));				element.setStyle('position', position);				this.addEvent('start', function(){			this.checkDroppables();		}, true);	},	start: function(event){		if (this.container){			var el = this.element, cont = this.container, ccoo = cont.getCoordinates(el.offsetParent), cps = {}, ems = {};			['top', 'right', 'bottom', 'left'].each(function(pad){				cps[pad] = cont.getStyle('padding-' + pad).toInt();				ems[pad] = el.getStyle('margin-' + pad).toInt();			}, this);			var width = el.offsetWidth + ems.left + ems.right, height = el.offsetHeight + ems.top + ems.bottom;			var x = [ccoo.left + cps.left, ccoo.right - cps.right - width];			var y = [ccoo.top + cps.top, ccoo.bottom - cps.bottom - height];			this.options.limit = {x: x, y: y};		}		this.parent(event);	},	checkAgainst: function(el){		el = el.getCoordinates();		var now = this.mouse.now;		return (now.x > el.left && now.x < el.right && now.y < el.bottom && now.y > el.top);	},	checkDroppables: function(){		var overed = this.droppables.filter(this.checkAgainst, this).getLast();		if (this.overed != overed){			if (this.overed) this.fireEvent('leave', [this.element, this.overed]);			if (overed){				this.overed = overed;				this.fireEvent('enter', [this.element, overed]);			} else {				this.overed = null;			}		}	},

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -