使用HTML5技术开发的超酷颜色选择器
生活随笔
收集整理的這篇文章主要介紹了
使用HTML5技术开发的超酷颜色选择器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
日期:2012-10-23??來源:GBin1.com
在線演示? 本地下載
可能大家見過很多使用jquery/js開發的顏色選擇器,今天這里我們將使用HTML5技術來自己實現一個更棒的顏色選擇器。希望大家喜歡!
HTML代碼
<!-- preview element --> <div class="preview"></div><!-- colorpicker element --> <div class="colorpicker" style="display:none"><canvas id="picker" var="1" width="300" height="300"></canvas><div class="controls"><div><label>R</label> <input type="text" id="rVal" /></div><div><label>G</label> <input type="text" id="gVal" /></div><div><label>B</label> <input type="text" id="bVal" /></div><div><label>RGB</label> <input type="text" id="rgbVal" /></div><div><label>HEX</label> <input type="text" id="hexVal" /></div></div> </div>代碼很簡單,包含了2個部分,一個點擊元素,一個用來展示顏色選擇器的元素。
Javascript代碼
$(function(){var bCanPreview = true; // can preview// create canvas and context objectsvar canvas = document.getElementById('picker');var ctx = canvas.getContext('2d');// drawing active imagevar image = new Image();image.onload = function () {ctx.drawImage(image, 0, 0, image.width, image.height); // draw the image on the canvas }// select desired colorwheelvar imagesrc="images/colorwheel1.png";switch ($(canvas).attr('var')) {case '2':imagesrc="images/colorwheel2.png";break;case '3':imagesrc="images/colorwheel3.png";break;case '4':imagesrc="images/colorwheel4.png";break;case '5':imagesrc="images/colorwheel5.png";break;}image.src = imageSrc;$('#picker').mousemove(function(e) { // mouse move handlerif (bCanPreview) {// get coordinates of current positionvar canvasOffset = $(canvas).offset();var canvasX = Math.floor(e.pageX - canvasOffset.left);var canvasY = Math.floor(e.pageY - canvasOffset.top);// get current pixelvar imageData = ctx.getImageData(canvasX, canvasY, 1, 1);var pixel = imageData.data;// update preview colorvar pixelColor = "rgb("+pixel[0]+", "+pixel[1]+", "+pixel[2]+")";$('.preview').css('backgroundColor', pixelColor);// update controls$('#rVal').val(pixel[0]);$('#gVal').val(pixel[1]);$('#bVal').val(pixel[2]);$('#rgbVal').val(pixel[0]+','+pixel[1]+','+pixel[2]);var dColor = pixel[2] + 256 * pixel[1] + 65536 * pixel[0];$('#hexVal').val('#' + ('0000' + dColor.toString(16)).substr(-6));}});$('#picker').click(function(e) { // click event handlerbCanPreview = !bCanPreview;});$('.preview').click(function(e) { // preview click$('.colorpicker').fadeToggle("slow", "linear");bCanPreview = true;}); });大家可以看到,這是一個非常短的js代碼,用來創建新的畫布和對象,然后我們畫出一個圓形的顏色板。你可以選擇不同顏色底板。 這里使用一個參數來設定不同的選擇。如下:
<canvas id="picker" var="1" width="300" height="300"></canvas><canvas id="picker" var="2" width="300" height="300"></canvas><canvas id="picker" var="3" width="300" height="300"></canvas><canvas id="picker" var="4" width="300" height="300"></canvas> <canvas id="picker" var="5" width="300" height="300"></canvas>下面我們添加事件:mousemove,click事件。這里使用jQuery來實現選擇器的展現和隱藏。
$('.preview').click(function(e) { // preview click $('.colorpicker').fadeToggle("slow", "linear"); bCanPreview = true; });當我們的鼠標移動到選擇對象上,我們需要刷新信息,例如,目前顏色
$('#picker').mousemove(function(e) { // mouse move handlerif (bCanPreview) {// get coordinates of current positionvar canvasOffset = $(canvas).offset();var canvasX = Math.floor(e.pageX - canvasOffset.left);var canvasY = Math.floor(e.pageY - canvasOffset.top);// get current pixelvar imageData = ctx.getImageData(canvasX, canvasY, 1, 1);var pixel = imageData.data;// update preview colorvar pixelColor = "rgb("+pixel[0]+", "+pixel[1]+", "+pixel[2]+")";$('.preview').css('backgroundColor', pixelColor);// update controls$('#rVal').val(pixel[0]);$('#gVal').val(pixel[1]);$('#bVal').val(pixel[2]);$('#rgbVal').val(pixel[0]+','+pixel[1]+','+pixel[2]);var dColor = pixel[2] + 256 * pixel[1] + 65536 * pixel[0];$('#hexVal').val('#' + ('0000' + dColor.toString(16)).substr(-6));} }); $('#picker').click(function(e) { // click event handlerbCanPreview = !bCanPreview; });CSS代碼
不同顏色底板的CSS:
/* colorpicker styles */ .colorpicker {background-color: #222222;border-radius: 5px 5px 5px 5px;box-shadow: 2px 2px 2px #444444;color: #FFFFFF;font-size: 12px;position: absolute;width: 460px; } #picker {cursor: crosshair;float: left;margin: 10px;border: 0; } .controls {float: right;margin: 10px; } .controls > div {border: 1px solid #2F2F2F;margin-bottom: 5px;overflow: hidden;padding: 5px; } .controls label {float: left; } .controls > div input {background-color: #121212;border: 1px solid #2F2F2F;color: #DDDDDD;float: right;font-size: 10px;height: 14px;margin-left: 6px;text-align: center;text-transform: uppercase;width: 75px; } .preview {background: url("../images/select.png") repeat scroll center center transparent;border-radius: 3px;box-shadow: 2px 2px 2px #444444;cursor: pointer;height: 30px;width: 30px; }希望大家喜歡!
來源:使用HTML5技術開發的超酷顏色選擇器
轉載于:https://www.cnblogs.com/gbin1/archive/2012/10/23/2735157.html
總結
以上是生活随笔為你收集整理的使用HTML5技术开发的超酷颜色选择器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 统计在线人数
- 下一篇: 关于modelsim 6.4a遇到的问题