JS实现的RGB网页颜色在线取色器完整实例


Posted in Javascript onDecember 21, 2016

本文实例讲述了JS实现的RGB网页颜色在线取色器。分享给大家供大家参考,具体如下:

运行效果图如下:

JS实现的RGB网页颜色在线取色器完整实例

完整实例代码如下:

<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type">
<meta name="description" content="在线取色器">
<meta name="keywords" content="在线取色器">
<title>RGB网页颜色在线取色器</title>
<style type="text/css">
<!--
a.g:link {
  text-decoration: none;
  color: #0000FF;
  font-size: 13px;
}
a.g:visited {
  text-decoration: none;
  color: #0000FF;
  font-size: 13px;
}
a.g:hover {
  text-decoration: none;
  color: #FF0000;
  font-size: 13px;
}
.gray{color:#666666}
.f12{font-size:12px}
.box{padding:2px;border:1px solid #CCC}
-->
</style>
<script language="javascript">
<!--
function h(obj,url){
obj.style.behavior='url(#default#homepage)';
obj.setHomePage(url);
}
function $(id){
  obj=document.getElementById(id);
  if (obj==null) obj=document.all.id;
  return obj;
}
//检查颜色值-Begin
  function isNum16(ch)
  {
    if (ch >= '0' && ch <= '9')return true;
    if (ch >= 'A' && ch <= 'F')return true;
    if (ch >= 'a' && ch <= 'f')return true;
    return false;
  }
  function isAllNum16(str1)
  {//判断颜色值。除第一个字符#外的任一个值是否大于等a,A,0,小于等于f,F,9,否则报错。
    for (i=1; i<str1.length; i++) {
      if (!isNum16(str1.charAt(i)))
      {
        return false;
      }
    }
    return true;
  }
function checkCol(myColor)
{  //made by jiarry,input color value to change background
if(myColor!="")
 {
 if(myColor.length !=7 || myColor.charAt(0)!="#")
  {
  alert("颜色值加#至少7位,请检查!");
  $("SelColor").value="";
  }
 else if(!isAllNum16(myColor))
 {
 alert("颜色代码错误,请检查\n 颜色代码示例:#ff6600");
 $("SelColor").value="";
 }
 else{
  return myColor;
  }
 }
}
//检查颜色值-END
var SelRGB = '#808080';
var DrRGB = "";
var SelGRAY = '120';
var SelCol="";
var baseCol="#808080";
var light="120";
var RGB=$("RGB");
var hexch = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
//add innerText to FireFox Begin
if(!document.all){
HTMLElement.prototype.__defineGetter__
(
"innerText",
function ()
{
var anyString = "";
var childS = this.childNodes;
for(var i=0; i<childS.length; i++)
{
if(childS[i].nodeType==1)
anyString += childS[i].tagName=="BR" ? '\n' : childS[i].innerText;
else if(childS[i].nodeType==3)
anyString += childS[i].nodeValue;
}
return anyString;
}
);
}
////add innerText to FireFox End
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 EndColor()
{ var i;
var GrayTable=$("GrayTable");
 if(DrRGB != SelRGB)
 {
  DrRGB = SelRGB;
  for(i = 0; i <= 30; i ++)
  GrayTable.rows[i].bgColor = DoColor(SelRGB, 240 - i * 8);
 }
 var SelColor=$("SelColor");
 var RGB=baseCol;
 var GRAY=light;
 var ShowColor=$("ShowColor");
 SelColor.value = DoColor(baseCol, light);
 ShowColor.bgColor = SelColor.value;
 document.getElementById('copytip').innerHTML='';
}
function ctOut(e) {
 baseCol=SelRGB;
 EndColor(baseCol);
 }
 function ctClick(e) {
 SelRGB = e.bgColor;
 EndColor();}
 function ctOver(e){
 baseCol = e.bgColor.toUpperCase();
 EndColor();
 }
 function gtOver(e){
 light = e.title;
 EndColor();
 }
 function gtOut() {
 light = SelGRAY;
 EndColor();
 }
 function gtClick(e){
 SelGRAY = e.title;
 EndColor();
 }
 function okClick(){
 var SelColor=$("SelColor");
 self.parent.setColor(SelColor.value);
 }
 function inpCol(o){
 var l=o.value;
 if (l.length==7){
 $('ShowColor').bgColor=checkCol(o.value);}
 else if(l.length>7){
 o.value=l.substring(0,7);
 alert("颜色代码加#不能超过7位");
 }
 }
-->
</script>
</head>
<body bgcolor=#ffffff text=#000000 vlink=#0033CC alink=#800080 link=#0033cc topmargin="0">
<p> </p>
<table align="center" width="700"><tr><td>
  </td></tr>
<tr><td>
  </td></tr>
</table>
<table width="720" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td bgcolor="#40A6DD" width="720"><b style="color:#FFFF00; font-size:16px;"> 颜色选择器</b></td>
</tr>
<td class="padd10">
<br>
<table width="720" border="0" cellpadding="0" cellspacing="0" class="colTab">
<tr align="left" valign="top">
 <td width=515>
 <table border="0" cellspacing="0" cellpadding="0"><tr><td>
 <span class="gray f12">颜色:</span>
 <div class="box" style="padding:0;width:422px !important;width:424px">
<TABLE ID=ColorTable BORDER=0 CELLSPACING=2 CELLPADDING=0 style='cursor:pointer'>
<SCRIPT LANGUAGE=JavaScript>
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;
  document.write('<TD BGCOLOR=#' + ToHex(r) + ToHex(g) + ToHex(b) + ' height=8 width=12 onmouseover="ctOver(this)" onmouseout="ctOut(this)" onmousedown="ctClick(this)"></TD>');
}
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);
 for(i = 0; i < 16; i ++)
 {
   document.write('<TR>');
   for(j = 0; j < 30; j ++)
   {
     n1 = j % 5;
     n2 = Math.floor(j / 5) * 3;
     n3 = n2 + 3;
     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);
   }
   document.writeln('</TR>');
 }
</SCRIPT>
</TABLE>
</div>
</td><td valign="top" style="padding-left:30px ">
<span class="gray f12">亮度:</span>
<div class="box" style="width:20px !important;width:26px;">
<TABLE ID=GrayTable BORDER=0 CELLSPACING=0 CELLPADDING=0 style='cursor:pointer'>
<SCRIPT LANGUAGE=JavaScript>
 for(i = 255; i >= 0; i -= 8.5) {
   document.write('<TR BGCOLOR=#' + ToHex(i) + ToHex(i) + ToHex(i) + '><TD TITLE=' + Math.floor(i * 16 / 17) + ' height=5 width=20 onmouseover="gtOver(this)" onmouseout="gtOut()" onmousedown="gtClick(this)"></TD></TR>');
}
</SCRIPT>
</TABLE>
</div>
</td></tr>
</table>
 </td>
 <td width=87 valign="top">
<span class="gray f12">选中颜色:</span>
<div class="box" style="width:50px !important;width:54px ">
<table ID=ShowColor width="50" height="24" cellspacing="0" cellpadding="0">
<tr><td></td></tr>
</table>
</div>
</td>
<td width="128" valign="top">
<span class="gray f12">代码:</span><br>
 <INPUT TYPE=TEXT class="colInp" ID=SelColor value="#FFFFFF" SIZE=7 onKeyUp="inpCol(this)">
<input type=button style="visibility:hidden!important;visibility:visible" onClick="document.getElementById('SelColor').select();clipboardData.setData('text',document.getElementById('SelColor').value); document.getElementById('copytip').innerHTML='代码已复制到剪贴板';" value=" 复制 "><div id="copytip" class="gray f12" style="margin-top:5px"></div></div><div style="visibility:hidden">基色 : <SPAN ID=RGB>#000000</SPAN><BR>亮度 : <SPAN ID=GRAY>120</SPAN><BR></div></td>
</tr>
</table>
<script>
EndColor();
</script>
</td>
</tr>
</table>
<center>
</center>
</body>
</html>
Javascript 相关文章推荐
JavaScript中Object和Function的关系小结
Sep 26 Javascript
Js 随机数产生6位数字
May 13 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
Aug 27 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
jQuery向父辈遍历的简单方法
Sep 18 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
Jun 15 Javascript
JS的Ajax与后端交互数据的实例
Aug 08 Javascript
使用vue开发移动端管理后台的注意事项
Mar 07 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
Mar 21 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 Javascript
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
js querySelector() 使用方法
Dec 21 #Javascript
简单实现Vue的observer和watcher
Dec 21 #Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
Dec 21 #Javascript
js实现开启密码大写提示
Dec 21 #Javascript
js实现的在线调色板功能完整实例
Dec 21 #Javascript
Bootstrap 模态框(Modal)插件代码解析
Dec 21 #Javascript
清除输入框内的空格
Dec 21 #Javascript
You might like
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
javascript引用对象的方法代码
2007/08/13 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
python实现的简单猜数字游戏
2015/04/04 Python
Python做文本按行去重的实现方法
2016/10/19 Python
Python Django基础二之URL路由系统
2019/07/18 Python
python实现图片九宫格分割
2021/03/07 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
tensorflow 环境变量设置方式
2020/02/06 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
企业给企业的表扬信
2014/01/13 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
三年级学生期末评语
2014/12/26 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle
详解Python中*args和**kwargs的使用
2022/04/07 Python
APP界面设计技巧和注意事项
2022/04/29 杂记