使用HTML5技术开发一个属于自己的超酷颜色选择器

可能大家见过很多使用jquery/js开发的颜色选择器,今天这里我们将使用HTML5技术来自己实现一个更棒的颜色选择器。希望大家喜欢!
 

复制代码
代码如下:

<!--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 objects
var canvas = document.getElementById('picker');
var ctx = canvas.getContext('2d');
// drawing active image
var image = new Image();
image.onload = function () {
ctx.drawImage(image, 0, 0, image.width, image.height); // draw the image on the canvas
}
// select desired colorwheel
var 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 handler
if (bCanPreview) {
// get coordinates of current position
var canvasOffset = $(canvas).offset();
var canvasX = Math.floor(e.pageX - canvasOffset.left);
var canvasY = Math.floor(e.pageY - canvasOffset.top);
// get current pixel
var imageData = ctx.getImageData(canvasX, canvasY, 1, 1);
var pixel = imageData.data;
// update preview color
var 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 handler
bCanPreview = !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>
<pre class="html" name="code"> </pre>

下面我们添加事件:mousemove,click事件。这里使用jQuery来实现选择器的展现和隐藏。

复制代码
代码如下:

$('.preview').click(function(e) { // preview click $('.colorpicker').fadeToggle("slow", "linear"); bCanPreview = true; });

当我们的鼠标移动到选择对象上,我们需要刷新信息,例如,目前颜色

复制代码
代码如下:

$('#picker').mousemove(function(e) { // mouse move handler
if (bCanPreview) {
// get coordinates of current position
var canvasOffset = $(canvas).offset();
var canvasX = Math.floor(e.pageX - canvasOffset.left);
var canvasY = Math.floor(e.pageY - canvasOffset.top);
// get current pixel
var imageData = ctx.getImageData(canvasX, canvasY, 1, 1);
var pixel = imageData.data;
// update preview color
var 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 handler
bCanPreview = !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;
}

希望大家喜欢

时间: 2024-12-11 05:05:03

使用HTML5技术开发一个属于自己的超酷颜色选择器的相关文章

使用jQuery和HTML5等开发一个天气预报web应用

开发一个天气预报web应用-jquery天气预报插件"> 今天我们介绍来自tutorialzine的一个HTML5/jQuery/Yahoo API的开发教程,在这篇文章中我们将介绍如何使用HTML5的Geolocation,jQuery和YahooAPI来开发一个天气预报web应用. 如果你不熟悉HTML5的Geolocation(地理位置服务). 首先你需要得到Yahoo API的API key,你可以通过如下地址取得对应的API key: https://developer.apps

HTML5技术助力Q+ 将实现移动端应用平移

5月12日,Facebook CEO马克·扎克伯格在其IPO(首次公开招股)路演硅谷站向投资者们透露,Facebook今年的首要任务将是改进其移动应用平台,而HTML5技术则是被即将上市的Facebook视为成为未来应用平台领军者的一大关键因素. 国内业界人士普遍认为,具有跨平台特征的HTML5将是开发标准的一次技术性革命,并且不仅适用于PC端,也将席卷正红火的移动终端.对这一点,腾讯Q+开放平台先试先行,提供了大量的技术支持加速推进HTML5在国内的发展,实现HTML5应用的流畅兼容将成为Q+

本人大三学生,寻师傅一名,开发一个小项目.

问题描述 大家好,初来CSDN.感觉自己很菜鸟,呵..我是武汉市中南财经政法大学大三的一名在读学生,在做实训课的内容.我打算用ASP.NET技术开发一个小型的网站,脚本语言采用的VB.NET,做了几天,由于没有足够的源码参考,发现进度很慢,特寻一名在这方面有经验的师傅指导下我.不胜感激.我的联系方式:QQ:274595413E-mail:mailhaizhou@qq.com.在线等候您的帮助,谢谢! 解决方案 解决方案二:卖一套源码给你要不要?电子购物的,带前台后台的.

开发一个ios的app采用的技术架构是什么呀

问题描述 开发一个ios的app采用的技术架构是什么呀 是传统的分布式系统么?阿里云提出的云端开发一个app属于哪种方式呢,与传统的开发有什么不同. 解决方案 开发一个ios程序一般使用C/S构架,属于分布式架构的一种.也就是使用云+端的模式.阿里云提供的有PaaS和IaaS服务,这样比较传统开发,节约了总体拥有成本,简化了开发和部署. 解决方案二: 不自己写还能自动生成么- -?

html5 app开发重大消息-腾讯在技术端推进Html5生态发展

    日前,腾讯正式发布腾讯浏览服务(Tencent Browser Service,以下简称TBS),宣布为合作伙伴提供整合腾讯底层技术.内容框架.广告体系以及大数据等多方面能力的升级浏览解决方案.腾讯公司副总裁钟翔平表示,TBS带来了浏览能力的升级,为Html5开发者提供更强的技术能力,将真正在技术端推进Html5生态的发展.     尽管目前Html5所带来的移动互联网营销异常火爆,但据很多html5 app开发者反映,由于开发Html5页面后需要反复测试,导致开发适配成本很高,同时为了

规划网站-一个人开发一个网站,想整体规划下,在动手开发,用什么技术可以整体规划

问题描述 一个人开发一个网站,想整体规划下,在动手开发,用什么技术可以整体规划 如果不规划,容易到后面开发会推翻或修改前面的开发(代码) 经常返工! 解决方案 uml,数据建模,画流程图,前期越详细,后期越ok 解决方案二: 整体规划?确认你的功能点吧 Axure挺不错的快速原型工具 解决方案三: UML建模工具,设计先行.

使用.NET的基本控件和ADO.NET技术完成一个图书管理系统的开发

问题描述 题目:紧急求助某学校要求使用.NET的基本控件和ADO.NET技术完成一个图书管理系统的开发,其中保存在SQLServer2005数据库中的用户信息如下:数据库名LibraryDB表名UserInfo字段显示字段名数据类型字段大小备注和说明登录编号LoginIdVarchar16主键登录密码LoginPwdVarchar8姓名UserNameVarchar16性别UserGenderVarchar2年龄UserAgeint大于0小于100要完成图书管理系统的注册用户与登录系统的功能:图

如何开发一个简单的HTML5 Canvas 小游戏

原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wizard's Lizard这个游戏的半数以上开发是由我完成的) 我们直接来看源码里的game.js,当然你也可以在线体验一下游戏先. 游戏截图 创建画布 // Create the canvas var canvas = document.createElement("canvas"); v

HTML5游戏开发的5条实用建议

HTML5很棒,因为它几乎无所不能--它并不是为某种特殊的应用设计的.更重要的是,HTML5几乎是无处不在的.它就在你的PC机上.你的手机上.你的平板设备上--它甚至可能就在你的厨房电器上. 正是由于HTML5具有丰富的功能并且无处不在,所以它给开发者带来了很多的灵感.俗话说得好,"一旦开发者有了灵感,他们就开始编写游戏了."(这句话应该是作者编的) 幸运的是,有关HTML5游戏开发的指南现在已经有很多了.而这篇文章则是要告诉开发者在开发HTML5游戏以前应该具备的一些全局概念.你能