取色器

本文详细解析了一个基于JavaScript的动态颜色选择器实现过程,包括颜色的获取、处理和显示,涉及事件监听、颜色空间转换及用户交互设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script type="text/javascript" src="color.js"></script> <body onmousemove ="getcolor(event);" scrolling="no" > <table cellspacing="0" cellpadding="0"> <tr height="20"> <td width="100" id="box" > </td> <td width="200"> <input id="colorhex" style="padding: 2px; font: 12px Arial, Tahoma; cursor: pointer; width: 100%; border: 0px" > </td> </tr> </table> </body>
varname = location.search.substr(1); function getcolor(event) { var hex = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F' ]; if (event.clientX > 164 || event.clientY > 164) { return; } var hsv = new Object(); var h = 164; var y = event.clientY; hsv.h = 360 * event.clientX / 164; if (y > h / 2) { hsv.s = 1.0; hsv.v = 2 * (h - y) / h; } else { hsv.v = 1.0; hsv.s = y / (h / 2); } var rgb = hsvToRgb(hsv); var red = Math.round(255 * rgb.r); var green = Math.round(255 * rgb.g); var blue = Math.round(255 * rgb.b); hexstr = '#' + hex[(red - (red % 16)) / 16].toString() + hex[red % 16].toString() + hex[(green - (green % 16)) / 16].toString() + hex[green % 16].toString() + hex[(blue - (blue % 16)) / 16].toString() + hex[blue % 16].toString() document.getElementById('box').style.backgroundColor = hexstr; document.getElementById('colorhex').value = hexstr; } function hsvToRgb(hsv) { var rgb = new Object(); var i, f, p, q, t; if (hsv.s == 0) { achromatic (grey) rgb.r = rgb.g = rgb.b = hsv.v; return rgb; } hsv.h /= 60; i = Math.floor(hsv.h); f = hsv.h - i; p = hsv.v * (1 - hsv.s); q = hsv.v * (1 - hsv.s * f); t = hsv.v * (1 - hsv.s * (1 - f)); switch (i) { case 0: rgb.r = hsv.v; rgb.g = t; rgb.b = p; break; case 1: rgb.r = q; rgb.g = hsv.v; rgb.b = p; break; case 2: rgb.r = p; rgb.g = hsv.v; rgb.b = t; break; case 3: rgb.r = p; rgb.g = q; rgb.b = hsv.v; break; case 4: rgb.r = t; rgb.g = p; rgb.b = hsv.v; break; default: rgb.r = hsv.v; rgb.g = p; rgb.b = q; break; } return rgb; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值