A Better Colour Picker

Developer
Size
18,308 Kb
Views
38,456

How do I make an a better colour picker?

Uses event.layerX & layerY so close your console if you're in Chrome!. What is a a better colour picker? How do you make a a better colour picker? This script and codes were developed by Tristan on 25 August 2022, Thursday.

A Better Colour Picker Previews

A Better Colour Picker - Script Codes HTML Codes

<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>A Better Colour Picker</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <h1>A better colour picker</h1>
<div id="page"> <label>Colour 1: </label><input type="text" class="cpicker" /><br /> <label>Colour 2: </label><input type="text" class="cpicker" /><br /> <label>Colour 3: </label><input type="text" class="cpicker" />
</div> <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script> <script src="js/index.js"></script>
</body>
</html>

A Better Colour Picker - Script Codes CSS Codes

body { font-family: arial; font-size:75%; }
h1{font-size:24px;text-transform:uppercase}
.colour-picker-interface { position: absolute;	background: #333;	font-family: helvetica, arial, sans-serif;	font-size: 8px;	line-height: 16px;	width: 465px;	box-shadow: 2px 2px 5px #333;	border-radius: 3px;	left: 100px;	top: 100px;	padding: 5px 0 0 5px;
}
.rgb-label, .hex-label {	color: #999;	float: left;	clear: left;	width: 10px;	height: 12px;	line-height: 16px;	margin: 6px 0 0 0;
}
.rgb-input,.hex-input,.hsl-input{	height: 16px;	font-size: 10px;	line-height: 12px;	padding: 2px;	margin: 2px 0 0 4px;	float: left;	border: 1px solid #444;
}
.rgb-input,.hsl-input{width:20px;}
.hex-input{width:50px;}
.colour-picker-controls{	float: left;	width: 95px;	height: 255px;	margin: 0 5px 5px 0;
}
.colour-picker-palette-controls{float:left;width:360px;margin:0 5px 5px 0;}
.colour-picker-palette,.colour-picker-level{	background: #000;	float: left;	position: relative;	cursor: crosshair;
}	.colour-picker-palette{width:360px;height:256px;}	.colour-picker-level{width:360px;height:20px;}
.colour-picker-preview{	width: 95px;	height: 95px;	background: #000;	float: left;
}
.colour-picker-control-box{	margin: 0 5px 5px 0;	float: left;
}
.colour-picker-button{	position: absolute;	font-size: 10px;	line-height: 10px;	padding: 1px 5px 2px 5px;	border: 1px solid #333;	background: #333;	color: #eee;	outline: 0;	bottom: 5px;	right: 5px;
}
.colour-picker-button-cancel {	right: 45px;
}
.colour-picker-button:hover {	background: #444;	cursor: pointer;
}
.colour-picker-button:active{	background: #111;
}
.colour-picker-palette-indicator {	width:3px;	height:3px;	border-radius:5px;	border:1px solid #000;	position:absolute;	left: 186px;	top: 256px;	cursor:crosshair;
}
.colour-picker-level-indicator{	width: 3px;	height: 18px;	border: 1px solid #000;	position: absolute;	top: 261px;	left: 186px;	cursor: crosshair;
}

A Better Colour Picker - Script Codes JS Codes

(function( $ ){ $.fn.colourPicker = function( options ){	var settings = {	target: this,	setBg: true,	offset: 10	}	if( options ){	$.extend( settings, options );	}	var _el = this,	alive = false,	colour = {	rgb: { r: 0, g: 0, b: 0 },	hsl: { h: 0, s: 0, l: 0.5 },	hex: '808080'	},	conversion = {	rgb2hex: function(rgb){	var r = (rgb.r.toString(16).length < 2) ? '0' + rgb.r.toString(16) : rgb.r.toString(16);	var g = (rgb.g.toString(16).length < 2) ? '0' + rgb.g.toString(16) : rgb.g.toString(16);	var b = (rgb.b.toString(16).length < 2) ? '0' + rgb.b.toString(16) : rgb.b.toString(16);	return r+g+b;	},	hex2rgb: function(hex){	return {r:parseInt(hex.substring(0,2),16),g:parseInt(hex.substring(2,4),16),b:parseInt(hex.substring(4,6),16)};	},	hsl2rgb: function(hsl){	var r, g, b;	if(hsl.s == 0){	r = g = b = hsl.l;	}else{	function hue2rgb(p, q, t){	if(t < 0) t += 1;	if(t > 1) t -= 1;	if(t < 1/6) return p + (q - p) * 6 * t;	if(t < 1/2) return q;	if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;	return p;	}	var q = hsl.l < 0.5 ? hsl.l * (1 + hsl.s) : hsl.l + hsl.s - hsl.l * hsl.s;	var p = 2 * hsl.l - q;	r = hue2rgb(p, q, hsl.h + 1/3);	g = hue2rgb(p, q, hsl.h);	b = hue2rgb(p, q, hsl.h - 1/3);	}	return {r:parseInt(r*255),g:parseInt(g*255),b:parseInt(b*255)};	},	rgb2hsl: function(rgb){	var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;	var max = Math.max(r, g, b), min = Math.min(r, g, b);	var h, s, l = (max + min) / 2;	if(max == min){	h = s = 0; // achromatic	}else{	var d = max - min;	s = l > 0.5 ? d / (2 - max - min) : d / (max + min);	switch(max){	case r: h = (g - b) / d + (g < b ? 6 : 0); break;	case g: h = (b - r) / d + 2; break;	case b: h = (r - g) / d + 4; break;	}	h /= 6;	}	return {h:h,s:s,l:l};	},	},	methods = {	initialise: function(target){	if( alive ) methods.destroy();	var colourPickerInterface = '<div class="colour-picker-interface">'	+'<div class="colour-picker-palette-controls">'	+'<canvas class="colour-picker-palette" width="360" height="256" id="canvas-palette"></canvas>'	+'<canvas class="colour-picker-level" width="360" height="20" id="canvas-level"></canvas>'	+'<div class="colour-picker-palette-indicator" id="palette-indicator">&nbsp;</div><div class="colour-picker-level-indicator" id="level-indicator">&nbsp;</div>'	+'</div>'	+'<div class="colour-picker-controls">'	+'<div class="colour-picker-rgb colour-picker-control-box">'	+'<label for="r" class="rgb-label">R:</label><input id="r" class="rgb-input" type="text" maxlength="3" value="0" maxvalue="255" minvalue="0" />'	+'<label for="g" class="rgb-label">G:</label><input id="g" class="rgb-input" type="text" maxlength="3" value="0" maxvalue="255" minvalue="0" />'	+'<label for="b" class="rgb-label">B:</label><input id="b" class="rgb-input" type="text" maxlength="3" value="0" maxvalue="255" minvalue="0" />'	+'</div>'	+'<div class="colour-picker-hsl colour-picker-control-box">'	+'<label for="h" class="rgb-label">H:</label><input id="h" class="hsl-input" type="text" maxlength="3" value="0" maxvalue="359" minvalue="0" />'	+'<label for="s" class="rgb-label">S:</label><input id="s" class="hsl-input" type="text" maxlength="3" value="0" maxvalue="255" minvalue="0" />'	+'<label for="l" class="rgb-label">L:</label><input id="l" class="hsl-input" type="text" maxlength="3" value="0" maxvalue="100" minvalue="0" />'	+'</div>'	+'<div class="colour-picker-hex colour-picker-control-box">'	+'<label for="hex" class="hex-label">#</label><input id="hex" class="hex-input" type="text" maxlength="6" value="000000" />'	+'</div>'	+'<div class="colour-picker-preview colour-picker-control-box"></div>'	+'<input type="button" id="colour-picker-cancel" class="colour-picker-button colour-picker-button-cancel" value="Cancel" /><input type="button" id="colour-picker-pick" class="colour-picker-button colour-picker-button-pick" value="Pick" />'	+'</div>'	+'</div>';	$('body').append(colourPickerInterface);	if( target.val() ){	colour = {	rgb: { r: 0, g: 0, b: 0 },	hsl: { h: 0, s: 0, l: 0 },	hex: target.val().replace( /#/, '' )	}	colour.rgb = conversion.hex2rgb(colour.hex);	colour.hsl = conversion.rgb2hsl(colour.rgb);	if( colour.hsl.l < 0.5 ){	$('#level-indicator, #palette-indicator').css({borderColor: '#ffffff'});	} else {	$('#level-indicator, #palette-indicator').css({borderColor: '#000000'});	}	$('#level-indicator').css({left: colour.hsl.l*359});	$('#palette-indicator').css({left: (colour.hsl.h * 359), top: (256 - (colour.hsl.s*256))});	} else {	colour = {	rgb: { r: 0, g: 0, b: 0 },	hsl: { h: 0, s: 0, l: 0.5 },	hex: '808080'	}	}	$('.rgb-input, .hex-input, .hsl-input').change(function(e){	switch(e.currentTarget.className){	case 'rgb-input':	if(parseInt(e.currentTarget.value) > e.currentTarget.attributes['maxvalue'].value){	e.currentTarget.value = e.currentTarget.attributes['maxvalue'].value;	}else if(parseInt(e.currentTarget.value) < e.currentTarget.attributes['minvalue'].value){	e.currentTarget.value = e.currentTarget.attributes['minvalue'].value;	}	colour.rgb.r = parseInt($('#r').val());	colour.rgb.g = parseInt($('#g').val());	colour.rgb.b = parseInt($('#b').val());	colour.hex = conversion.rgb2hex(colour.rgb);	colour.hsl = conversion.rgb2hsl(colour.rgb);	break;	case 'hex-input':	if( e.currentTarget.value.match( /[0-9a-fA-F]{6}/ ) ){	colour.hex = e.currentTarget.value;	colour.rgb = conversion.hex2rgb(colour.hex);	colour.hsl = conversion.rgb2hsl(colour.rgb);	}	break;	case 'hsl-input':	if( e.currentTarget.value > e.currentTarget.attributes['maxvalue'].value ){	e.currentTarget.value = e.currentTarget.attributes['maxvalue'].value;	}else if( e.currentTarget.value < e.currentTarget.attributes['minvalue'].value ){	e.currentTarget.value = e.currentTarget.attributes['minvalue'].value;	}	colour.rgb = conversion.hsl2rgb(colour.hsl);	colour.hex = conversion.rgb2hex(colour.rgb);	break;	}	methods.updatepreview();	});	$('.colour-picker-palette').bind( 'mousedown', function(e){	$('#palette-indicator').bind( 'mouseup', function(){	$('.colour-picker-palette').unbind( 'mousemove' );	});	$(this).bind( 'mousemove', function(e){	colour.hsl.h = (1/359) * e.originalEvent.layerX;	colour.hsl.s = 1-((1/256) * e.originalEvent.layerY);	colour.rgb = conversion.hsl2rgb( colour.hsl );	colour.hex = conversion.rgb2hex( colour.rgb );	$('#palette-indicator').css({ left: e.originalEvent.layerX, top: e.originalEvent.layerY });	methods.updatepreview();	return false;	});	return false;	}).bind( 'mouseup', function(){ $(this).unbind( 'mousemove' ); });	$('.colour-picker-level').bind( 'mousedown', function(e){	$('#level-indicator').bind( 'mouseup', function(){ $('.colour-picker-level').unbind( 'mousemove' ); });	$(this).bind( 'mousemove', function(e){	colour.hsl.l = e.originalEvent.layerX/359;	colour.rgb = conversion.hsl2rgb(colour.hsl);	colour.hex = conversion.rgb2hex(colour.rgb);	methods.changelevel(colour.hsl.l);	$('#level-indicator').css({ left: e.originalEvent.layerX+5 });	methods.updatepreview();	return false;	});	return false;	}).bind( 'mouseup', function(){ $(this).unbind( 'mousemove' ); });	$('#colour-picker-pick').bind( 'mouseup', function(){ methods.pickcolour(target); });	$('#colour-picker-cancel').bind( 'mouseup', function(){ methods.destroy(); });	$('.colour-picker-interface').css({ left: target.offset().left + target.width() + settings.offset, top: target.offset().top });	methods.drawpalette();	methods.drawlevel();	methods.updatepreview();	alive = true;	},	pickcolour: function(target){	target.val('#'+colour.hex);	if(settings.setBg && colour.hsl.l < 0.5){	target.css({backgroundColor:'#'+colour.hex,color:'#ffffff'});	}else{	target.css({backgroundColor:'#'+colour.hex,color:'#000000'});	}	$('.colour-picker-interface').remove();	alive = false;	},	destroy: function(){	$('.colour-picker-interface').remove();	alive = false;	},	drawpalette: function(){	canvasPalette = document.getElementById('canvas-palette');	contextPalette = canvasPalette.getContext('2d');	paletteImg = new Image();	paletteImg.src = "data:image/png;base64,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";	paletteImg.onload = function(){contextPalette.drawImage(paletteImg,0,0);};	},	drawlevel: function(){	canvasLevel = document.getElementById('canvas-level');	contextLevel = canvasLevel.getContext('2d');	levelImg = new Image();	levelImg.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWgAAAAUCAIAAAFYFwAaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPlJREFUeNpiZGBgYGNjY2VlZQODgWIwMQwOMFjcARBAjMzMzPDwgYcV/UVG4wUVAAQQIxAzgwETExMzBkATHPZqBku0DBIAEECMQIA/5EaWyGiKGIxl2GhwjAbHoAcAAcQIKU6BhQqcROMSLzhqzjAzZzSvjILRgnQUjCaOUTCaOEYBPQBAAHbrEAcAAISBWPj/p2fxc0urkUfg/ifSPzVmpmbsB84K4kAciANxIA7EgThYFwHas2MVAEAQCoAO/v83CwktrRUId0NIIDg9gzLWl32fbddn8eLyT4t5zGOeiy22CuA5CggOQHAAggMQHACCAxAcgOAAhiqaORUE8XcHxgAAAABJRU5ErkJggg==";	levelImg.onload = function(){contextLevel.drawImage(levelImg,0,0);};	},	changelevel: function(l){	if( l <= 0.5 ){	$('.colour-picker-palette-controls').css({backgroundColor: '#000000'});	$('.colour-picker-palette').css({opacity: l*2});	$('#level-indicator, #palette-indicator').css({borderColor: '#ffffff'});	} else {	$('.colour-picker-palette-controls').css({ backgroundColor: '#ffffff'});	$('.colour-picker-palette').css({opacity: Math.abs(1-(1/l))});	$('#level-indicator, #palette-indicator').css({borderColor: '#000000'});	}	},	updatepreview: function(){	$('.colour-picker-preview').css({backgroundColor: '#'+colour.hex});	$('#r').val(colour.rgb.r);	$('#g').val(colour.rgb.g);	$('#b').val(colour.rgb.b);	$('#h').val(colour.hsl.h*360);	$('#s').val(colour.hsl.s*256);	$('#l').val(colour.hsl.l*100);	$('#hex').val(colour.hex);	}	};	//startup	_el.click( function(e){	methods.initialise($(e.target));	});	};
})( jQuery );
$('.cpicker').colourPicker();
A Better Colour Picker - Script Codes
A Better Colour Picker - Script Codes
Home Page Home
Developer Tristan
Username sinthetyc
Uploaded August 25, 2022
Rating 3.5
Size 18,308 Kb
Views 38,456
Do you need developer help for A Better Colour Picker?

Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!

Tristan (sinthetyc) Script Codes
Create amazing captions with AI!

Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!