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

📄 colorpicker.js

📁 这是一个ajax的例子大家好好的看看就是一个鱼眼的效果
💻 JS
字号:
if(!dojo._hasResource["dojox.widget.ColorPicker"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.widget.ColorPicker"] = true;dojo.provide("dojox.widget.ColorPicker");dojo.experimental("dojox.widget.ColorPicker"); // level: prototypedojo.require("dijit.form._FormWidget");dojo.require("dojo.dnd.move"); dojo.require("dojo.fx"); dojo.declare("dojox.widget.ColorPicker",	dijit.form._FormWidget,	{	// summary: a HSV color picker - like PhotoShop	//	// description: 	//	provides an interactive HSV ColorPicker similar to	//	PhotoShop's color selction tool. Will eventually	//	mixin FormWidget and be used as a suplement or a	//	'more interactive' replacement for ColorPalette	//		// example:	//	//	code: 	//	var picker = new dojox.widget.ColorPicker({	//		// a couple of example toggles:	//		animatePoint:false,	//		showHsv: false,	//		webSafe: false,	//		showRgb: false 		//	});	//		//	markup:	//	<div dojoType="dojox.widget.ColorPicker"></div>	//	// showRgb: Boolean	//	show/update RGB input nodes	showRgb: true,		// showHsv: Boolean	//	show/update HSV input nodes	showHsv: true,		// showHex: Boolean	//	show/update Hex value field	showHex: true,	// webSafe: Boolean	//	deprecated? or just use a toggle to show/hide that node, too?	webSafe: true,	// animatePoint: Boolean	//	toggle to use slideTo (true) or just place the cursor (false) on click	animatePoint: true,	// slideDuration: Integer	//	time in ms picker node will slide to next location (non-dragging) when animatePoint=true	slideDuration: 250, 	_underlay: dojo.moduleUrl("dojox.widget","ColorPicker/images/underlay.png"),	templateString:"<div class=\"dojoxColorPicker\">\n\t<div class=\"dojoxColorPickerBox\">\n\t\t<div dojoAttachPoint=\"cursorNode\" class=\"dojoxColorPickerPoint\"></div>\n\t\t<img dojoAttachPoint=\"colorUnderlay\" dojoAttachEvent=\"onclick: _setPoint\" class=\"dojoxColorPickerUnderlay\" src=\"${_underlay}\">\n\t</div>\n\t<div class=\"dojoxHuePicker\">\n\t\t<div dojoAttachPoint=\"hueCursorNode\" class=\"dojoxHuePickerPoint\"></div>\n\t\t<div dojoAttachPoint=\"hueNode\" class=\"dojoxHuePickerUnderlay\" dojoAttachEvent=\"onclick: _setHuePoint\"></div>\n\t</div>\n\t<div dojoAttachPoint=\"previewNode\" class=\"dojoxColorPickerPreview\"></div>\n\t<div dojoAttachPoint=\"safePreviewNode\" class=\"dojoxColorPickerWebSafePreview\"></div>\n\t<div class=\"dojoxColorPickerOptional\">\n\t\t<div class=\"dijitInline dojoxColorPickerRgb\" dojoAttachPoint=\"rgbNode\">\n\t\t\t<table>\n\t\t\t<tr><td>r</td><td><input dojoAttachPoint=\"Rval\" size=\"1\"></td></tr>\n\t\t\t<tr><td>g</td><td><input dojoAttachPoint=\"Gval\" size=\"1\"></td></tr>\n\t\t\t<tr><td>b</td><td><input dojoAttachPoint=\"Bval\" size=\"1\"></td></tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div class=\"dijitInline dojoxColorPickerHsv\" dojoAttachPoint=\"hsvNode\">\n\t\t\t<table>\n\t\t\t<tr><td>h</td><td><input dojoAttachPoint=\"Hval\"size=\"1\"> &deg;</td></tr>\n\t\t\t<tr><td>s</td><td><input dojoAttachPoint=\"Sval\" size=\"1\"> %</td></tr>\n\t\t\t<tr><td>v</td><td><input dojoAttachPoint=\"Vval\" size=\"1\"> %</td></tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div class=\"dojoxColorPickerHex\" dojoAttachPoint=\"hexNode\">\t\n\t\t\thex: <input dojoAttachPoint=\"hexCode, focusNode\" size=\"6\" class=\"dojoxColorPickerHexCode\">\n\t\t</div>\n\t</div>\n</div>\n",	postCreate: function(){		// summary: As quickly as we can, set up ie6 alpha-filter support for our		// 	underlay.  we don't do image handles (done in css), just the 'core' 		//	of this widget: the underlay. 		if(dojo.isIE && dojo.isIE<7){ 			this.colorUnderlay.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this._underlay+"', sizingMethod='scale')";			this.colorUnderlay.src = dojo.moduleUrl("dojo","resources/blank.gif").toString();		}		// hide toggle-able nodes:		if (!this.showRgb){ this.rgbNode.style.display = "none"; }		if (!this.showHsv){ this.hsvNode.style.display = "none"; }		if (!this.showHex){ this.hexNode.style.display = "none"; } 		if (!this.webSafe){ this.safePreviewNode.style.display = "none"; } 	},	startup: function(){		// summary: defer all additional calls until we're started, and our		// embeded sliders are loaded? (not implemented yet)		// this._offset = ((dojo.marginBox(this.cursorNode).w)/2); 		this._offset = 0; 		this._mover = new dojo.dnd.Moveable(this.cursorNode, {			mover: dojo.dnd.boxConstrainedMover({ t:0, l:0, w:150, h:150 })		}); 		this._hueMover = new dojo.dnd.Moveable(this.hueCursorNode, {			mover: dojo.dnd.boxConstrainedMover({ t:0, l:0, w:0, h:150 })		});		// no dnd/move/move published ... use a timer:		dojo.subscribe("/dnd/move/stop",dojo.hitch(this,"_clearTimer"));		dojo.subscribe("/dnd/move/start",dojo.hitch(this,"_setTimer"));		// ugly scaling calculator.  need a XYslider badly		this._sc = (1/dojo.coords(this.colorUnderlay).w);  		this._hueSc = (255/(dojo.coords(this.hueNode).h+this._offset)); 				// initial color		this._updateColor(); 			},	_setTimer: function(/* dojo.dnd.Mover */mover){		this._timer = setInterval(dojo.hitch(this,"_updateColor"),45);		},	_clearTimer: function(/* dojo.dnd.Mover */mover){		clearInterval(this._timer);		this.onChange(this.value);	},	_setHue: function(/* Decimal */h){		// summary: sets a natural color background for the 		// 	underlay image against closest hue value (full saturation) 		// h: 0..255 		// this is not a pretty conversion:		var hue = dojo.colorFromArray(this._hsv2rgb(h,1,1,{ inputRange: 1 })).toHex();		dojo.style(this.colorUnderlay,"backgroundColor",hue);	},	_updateColor: function(){		// summary: update the previewNode color, and input values [optional]		var h = Math.round((255+(this._offset))-((dojo.style(this.hueCursorNode,"top")+this._offset)*this._hueSc));		var s = Math.round((dojo.style(this.cursorNode,"left")*this._sc)*100); 		var v = Math.round(100-(dojo.style(this.cursorNode,"top")*this._sc)*100);		// limit hue calculations to only when it changes		if(h != this._hue){ this._setHue(h); }		var rgb = this._hsv2rgb(h,s/100,v/100,{ inputRange: 1 }); 		var hex = (dojo.colorFromArray(rgb).toHex());		this.previewNode.style.backgroundColor = hex;			if(this.webSafe){ this.safePreviewNode.style.backgroundColor = hex; }		if(this.showHex){ this.hexCode.value = hex; }		if(this.showRgb){			this.Rval.value = rgb[0];			this.Gval.value = rgb[1];				this.Bval.value = rgb[2];		}		if(this.showHsv){			this.Hval.value = Math.round((h*360)/255); // convert to 0..360			this.Sval.value = s;			this.Vval.value = v;		}		this.value=hex;		// anytime we muck with the color, fire onChange?		if (!this._timer && !(arguments[1])){			this.setValue(this.value);				this.onChange(this.value);		}	},	_setHuePoint: function(/* Event */evt){ 		// summary: set the hue picker handle on relative y coordinates		if(this.animatePoint){			dojo.fx.slideTo({ 				node: this.hueCursorNode, 				duration:this.slideDuration,				top: evt.layerY,				left: 0,				onEnd: dojo.hitch(this,"_updateColor")			}).play();		}else{			dojo.style(this.hueCursorNode,"top",(evt.layerY)+"px");			this._updateColor(false); 		}	},	_setPoint: function(/* Event */evt){		// summary: set our picker point based on relative x/y coordinates		if(this.animatePoint){			dojo.fx.slideTo({ 				node: this.cursorNode, 				duration:this.slideDuration,				top: evt.layerY-this._offset, 				left: evt.layerX-this._offset,				onEnd: dojo.hitch(this,"_updateColor")			}).play();		}else{			dojo.style(this.cursorNode,"left",(evt.layerX-this._offset)+"px");			dojo.style(this.cursorNode,"top",(evt.layerY-this._offset)+"px");			this._updateColor(false); 		}	},	// this ported directly from 0.4 dojo.gfx.colors.hsv, with bugs :)	// FIXME: use ttrenka's HSB ?	_hsv2rgb: function(/* int || Array */h, /* int */s, /* int */v, /* Object? */options){		//	summary		//	converts an HSV value set to RGB, ranges depending on optional options object.		//	patch for options by Matthew Eernisse 			if (dojo.isArray(h)) {			if(s){				options = s;			}			v = h[2] || 0;			s = h[1] || 0;			h = h[0] || 0;		}			var opt = {			inputRange:  (options && options.inputRange)  ? options.inputRange : [255, 255, 255],			outputRange: (options && options.outputRange) ? options.outputRange : 255		};		    switch(opt.inputRange[0]) { 			// 0.0-1.0 			case 1: h = h * 360; break; 			// 0-100 			case 100: h = (h / 100) * 360; break; 			// 0-360 			case 360: h = h; break; 			// 0-255 			default: h = (h / 255) * 360; 		} 		if (h == 360){ h = 0;}			//	no need to alter if inputRange[1] = 1		switch(opt.inputRange[1]){			case 100: s /= 100; break;			case 255: s /= 255;		}			//	no need to alter if inputRange[1] = 1		switch(opt.inputRange[2]){			case 100: v /= 100; break;			case 255: v /= 255;		}			var r = null;		var g = null;		var b = null;			if (s == 0){			// color is on black-and-white center line			// achromatic: shades of gray			r = v;			g = v;			b = v;		}else{			// chromatic color			var hTemp = h / 60;		// h is now IN [0,6]			var i = Math.floor(hTemp);	// largest integer <= h			var f = hTemp - i;		// fractional part of h				var p = v * (1 - s);			var q = v * (1 - (s * f));			var t = v * (1 - (s * (1 - f)));				switch(i){				case 0: r = v; g = t; b = p; break;				case 1: r = q; g = v; b = p; break;				case 2: r = p; g = v; b = t; break;				case 3: r = p; g = q; b = v; break;				case 4: r = t; g = p; b = v; break;				case 5: r = v; g = p; b = q; break;			}		}			switch(opt.outputRange){			case 1:				r = dojo.math.round(r, 2);				g = dojo.math.round(g, 2);				b = dojo.math.round(b, 2);				break;			case 100:				r = Math.round(r * 100);				g = Math.round(g * 100);				b = Math.round(b * 100);				break;			default:				r = Math.round(r * 255);				g = Math.round(g * 255);				b = Math.round(b * 255);		}		return [r, g, b];	}});}

⌨️ 快捷键说明

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