function getColor(e){
obj = document.all ? event.srcElement : e.target;
obj.style.position = "relative";
var inputTop = getTop(obj);
var inputLeft = getLeft(obj);
var htmlStr = "visibility:visible;position:absolute;";
//
var colorPacker = document.getElementById("colorPacker");
var colorPackerShadow = document.getElementById("colorPackerShadow");
if (!colorPacker) {
colorPacker = document.createElement("div");
colorPackerShadow = document.createElement("div");
colorPacker.id = "colorPacker";
colorPackerShadow.id = "colorPackerShadow";
colorPacker.style.cssText = htmlStr;
colorPackerShadow.style.cssText = htmlStr+"opacity:0.3;filter:alpha(opacity=20);";
colorPacker.style.zIndex = 34535;
colorPackerShadow.style.zIndex = 34534;
colorPacker.style.backgroundColor = "#6997EF" ;
colorPackerShadow.style.backgroundColor = "#000000" ;
colorPacker.style.height = "115px";
colorPackerShadow.style.height = "115px";
colorPacker.style.width = "165px";
colorPackerShadow.style.width = "165px";
var titleStyle = "width:95%;background:#6997EF;color:#ffffff;font-size:12px;margin-left:5px;";
var contetnStyle = "width:95%;text-align:center;margin:auto;background:#6997EF;" ;
var colorPackerTitle = "<div style='"+titleStyle+"'>取色器</div>" ;
var colorPackerContent = "<div style='"+contetnStyle+"'>"+bulid()+"<div>" ;
document.body.appendChild(colorPacker);
document.body.appendChild(colorPackerShadow);
colorPacker.innerHTML = colorPackerTitle+ colorPackerContent;
}
else {
document.getElementById("colorPacker").style.visibility = "visible";
document.getElementById("colorPackerShadow").style.visibility = "visible";
}
colorPacker.style.left = (inputLeft) + "px";
colorPacker.style.top = (inputTop + obj.clientHeight) + "px";
colorPackerShadow.style.left = (inputLeft+2) + "px";
colorPackerShadow.style.top = (inputTop + obj.clientHeight+2) + "px";
if(!colorPacker.onclick){
colorPacker.onclick = function(oEvent){
e = oEvent || window.event;
var ev = document.all ? event.srcElement : e.target ;
obj.style.backgroundColor = ev.bgColor;
this.style.visibility = "hidden";
document.getElementById("colorPackerShadow").style.visibility = "hidden";
if (document.all) {
e.cancelBubble = true;
}
else {
e.stopPropagation();
}
};
}
if(!document.all){
colorPacker.setAttribute('flag','flag');
colorPackerShadow.setAttribute('flag','flag');
obj.setAttribute('flag','flag');
}else{
colorPacker.flag = "flag";
colorPackerShadow.flag = "flag";
obj.flag = "flag";
}
if(!document.onclick){
document.onclick = function(e){
var ev = document.all ? event.srcElement : e.target ;
if (ev.getAttribute("flag")==null){
document.getElementById("colorPacker").style.visibility = "hidden";
document.getElementById("colorPackerShadow").style.visibility = "hidden";
}
};
}
}
var hexch = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
var cnum = new Array(1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0);
function ToHex(n){
var h, l;
n = Math.round(n);
l = n % 16;
h = Math.floor((n / 16)) % 16;
return (hexch[h] + hexch[l]);
}
function DoColor(c, l){
var r, g, b;
r = '0x' + c.substring(1, 3);
g = '0x' + c.substring(3, 5);
b = '0x' + c.substring(5, 7);
if (l > 120) {
l = l - 120;
r = (r * (120 - l) + 255 * l) / 120;
g = (g * (120 - l) + 255 * l) / 120;
b = (b * (120 - l) + 255 * l) / 120;
}
else {
r = (r * l) / 120;
g = (g * l) / 120;
b = (b * l) / 120;
}
return '#' + ToHex(r) + ToHex(g) + ToHex(b);
}
function wc(r, g, b, n){
r = ((r * 16 + r) * 3 * (15 - n) + 0x80 * n) / 15;
g = ((g * 16 + g) * 3 * (15 - n) + 0x80 * n) / 15;
b = ((b * 16 + b) * 3 * (15 - n) + 0x80 * n) / 15;
return '<TD BGCOLOR=#' + ToHex(r) + ToHex(g) + ToHex(b) + ' height=6 width=6></TD>';
}
function bulid(){
var trStr = "<table CELLPADDING=0 CELLSPACING=0>";
for (i = 0; i < 16; i++) {
trStr += '<TR>';
for (j = 0; j < 30; j++) {
n1 = j % 5;
n2 = Math.floor(j / 5) * 3;
n3 = n2 + 3;
trStr += wc((cnum[n3] * n1 + cnum[n2] * (5 - n1)), (cnum[n3 + 1] * n1 + cnum[n2 + 1] * (5 - n1)), (cnum[n3 + 2] * n1 + cnum[n2 + 2] * (5 - n1)), i);
}
trStr += '</TR>';
}
trStr += "</table>";
return trStr;
}
function getTop(e){
var offset = e.offsetTop;
if (e.offsetParent != null)
offset += getTop(e.offsetParent);
return offset;
}
function getLeft(e){
var offset = e.offsetLeft;
if (e.offsetParent != null)
offset += getLeft(e.offsetParent);
return offset;
}
getColor这个接口可以绑定于一个html控件之上,实现该控件的背影色变化,颜色算法是从网上一个控件改来的。如果是直接在页面上调用getColor则必须使用getColor(event)方式,不然在firefox下不能使用该控件。目前没有黑色与白色的选择,因为方案还没有确定。
第一次发控件,有不足之处,多多指教。
分享到:
相关推荐
这是一个纯js实现的日期选择控件,页面效果不错
在C#编程中,开发人员有时需要创建自定义控件以满足特定的用户界面需求,例如实现一个调色板取色器。这个控件能够帮助用户从丰富的颜色库中选择所需的颜色,类似于图像编辑软件Photoshop中的功能。下面将详细讨论...
总的来说,这个“基于纯JS实时实现的颜色选择控件”示例展示了如何用JavaScript优雅地解决用户界面中的常见问题。它不仅提高了用户体验,而且在性能和可维护性方面也表现出色,对于任何需要颜色选择功能的前端开发者...
下面将详细讨论纯JavaScript实现日期控件的关键知识点。 1. **HTML结构**: 创建日期输入的基础HTML结构,通常使用`<input type="date">`标签。但为了实现自定义样式和交互,可能需要额外的容器元素,如`<div>`,...
本教程将详细讲解一个基于纯JavaScript实现的日期控件,其特点在于使用简单,无需依赖任何外部库。 1. **纯JavaScript实现** 这个日期控件完全由JavaScript编写,不依赖jQuery或其他JavaScript框架,这使得它在...
"安卓手绘图片处理画板相关-自定义控件-颜色取色器.rar" 这个压缩包文件,显然包含了创建一个用于手绘图片处理的画板应用中的关键组件——颜色取色器。颜色取色器是让用户能够选择和设定颜色的工具,常见于各种图像...
本篇将详细介绍如何使用JavaScript实现一个日期控件。 1. **HTML基础** 首先,我们需要在HTML页面中创建一个用于显示日期控件的容器。可以使用`<input>`标签,并设置`type="date"`,这样浏览器会自动提供一个基本...
这个压缩包文件提供了一个纯JavaScript开发的日历和日程控件,这意味着它不依赖任何特定的库或框架,如jQuery或其他重型库,而是完全基于JavaScript语言本身构建的。这使得它具有轻量级、快速加载的特点,并且可以在...
在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)构建一个简易的取色器应用,该应用基于API函数实现类似QQ截图和Photoshop的取色功能。首先,我们来了解一下MFC。 MFC是微软提供的一套C++类库...
采用kotlin代码实现,代码简单易懂,采用接口方式回调结果,已经封装好,方便移植。具有以下特性: 1、支持点击选色,滑动选色,且支持实时预览 2、颜色分解为Alpha及RGB 四通道 更加直观 3、支持4通道分别调色,...
在这个案例中,我们提到的"时间控件"可能是通过纯JS实现的一个自定义组件,它可以显示日历视图,并允许用户选择日期和时间。 首先,我们需要创建HTML结构来呈现这个时间控件。这可能包括一个输入框,用于用户交互,...
本项目提供了一个纯JavaScript实现的日历和月历控件,无需依赖任何外部库,如jQuery或其他框架,使得它可以在各种环境中轻松集成。 一、纯JavaScript日历控件 纯JS日历控件是一种动态生成的UI组件,用于展示一个...
用js实现的日期控件,只需要包含js即可,应用方便
在JavaScript(特别是原生JS)中,我们可以创建自定义的日期时间选择器,或者利用现有的开源库来实现这一功能。 在JavaScript中,`Date` 对象是处理日期和时间的基础。通过实例化 `Date` 对象,我们可以获取当前...
总之,纯JS日期控件的核心是利用JavaScript的`Date`对象进行日期处理,并通过DOM操作和事件监听来实现用户交互。理解这些基本概念和技巧,可以帮助你构建出功能强大且自定义程度高的日期选择器。
js实现日期选择控件,准确方便在文本框输入日期,演示,源代码
以下是一个关于使用JavaScript实现日历控件的知识点详解: 1. **基础概念**: - **事件监听器**:JavaScript通过事件监听器来响应用户的操作,例如点击事件(click)。当用户点击文本框时,可以触发弹出日历的功能...
"VB后台取色控件"可能是一个独立的控件库,包含自定义控件的定义和实现,开发者可以将其添加到VB工程中,快速地在界面上添加取色功能。"成品测试"可能是一个编译后的可执行文件,供用户验证取色功能是否正常工作。 ...
【标题解析】 "一个很漂亮的基于纯js实现的color-picker控件源码...对于想要学习或优化自己颜色选择器实现的开发者来说,这是一个非常有价值的参考资料,可以帮助他们深入理解Web前端开发中动态交互控件的实现细节。
综上所述,实现一个纯JavaScript的批量上传控件涉及了前端和后端的技术,需要理解HTML5 File API、JavaScript事件处理、AJAX、进度条实现以及ASP.NET服务器端处理等多个方面。这样的控件旨在提供高效、安全且用户...