七亿少女的劫丨
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<style>
body{
background-color:#E6E6FA;
}
.color{
width: 60px;
height: 40px;
}
input{
width: 60px;
text-align: center;
}
.table td, .table th {
vertical-align: middle;
}
</style>
<body>
<table class="table">
<tbody>
<tr>
<td>
R: <input value="255" type="text" name="R" class="num" maxlength="3" style="color: red"
onKeyPress="getkey(event, 0)">
G: <input value="180" type="text" name="G" class="num" maxlength="3" style="color: green"
onKeyPress="getkey(event, 0)">
B: <input value="0" type="text" name="B" class="num" maxlength="3" style="color:blue"
onKeyPress="getkey(event, 0)">
<button onclick="torgb()">转换</button>
</td>
<td>
<div id="color1" class="color"></div>
</td>
<td>
<div id="lab1"></div>
</td>
</tr>
<tr>
<td>
# <input value="CC00FF" type="text" name="B" class="rgb" maxlength="6" style="text-align: left" onkeypress="getkey(event, 1)" spellcheck="false" />
<button onclick="tonum()">转换</button>
</td>
<td>
<div id="color2" class="color"></div>
</td>
<td>
<div id="lab2"></div>
</td>
</tr>
</tbody>
</table>
</body>
<script>
function torgb() {
var hexcode = "#";
var lab1txt = "";
for (var i = 0; i < 3; i++) {
var n = document.getElementsByClassName('num')[i].value;
if (parseInt(n) != n) {
return alert("请输入整数(0~255)");
} else if (n < 0 || n > 255) {
return alert("请输入0~255的整数")
} else {
var str = "0123456789ABCDEF",
space = "",
key = n % 16;
space = str.substr(key, 1);
key = (n - key) / 16;
hexcode += str.substr(key, 1) + space;
}
}
document.getElementById("color1").style.backgroundColor = hexcode;
document.getElementById("lab1").innerHTML = hexcode;
}
function tonum() {
var lab2txt = "";
var num = [];
var rgb = "0123456789ABCDEF";
var str = document.getElementsByClassName('rgb')[0].value;
str = str.toUpperCase();
if (str == "") str = "000000";
for (var i = 0; i < 3; i++) {
num[1] = str.substr(i * 2, 2);
num[2] = num[1].substr(0, 1);
num[2] = rgb.indexOf(num[2]) * 16;
num[3] = num[1].substr(1, 1);
num[3] = rgb.indexOf(num[3]) * 1;
num[10 * i] = num[2] + num[3];
}
document.getElementById("color2").style.backgroundColor = "#" + str;
document.getElementById("lab2").innerHTML = num[0] + " , " + num[10] + " , " + num[20];
}
function getkey(e, n) {
var keynum;
if (window.event) keynum = e.keyCode;
else if (e.which) keynum = e.which;
if (keynum == 13) {
if (n == 0) torgb();
else tonum();
}
}
</script>
</html>
ps:
1.rgb颜色值转换成十六进制颜色码
rgb颜色值列如#cdcdcd,每两位为一个0-255的数字,
用substr(0,2),substr(2,2),substr(4,2)划分出cd,cd,cd,
再把cd,cd,cd,划分 为 三组c,d 进行数字转换,
c是16的一次方位,所以 用c在0123456789ABCEDF 出现的位置 乘16就是c代表的数字,
同理d代表的数字就是在0123456789ABCEDF位置 乘1
c:12x16,d:13x1
所以#cdcdcd :205 , 205 , 205
2.十六进制颜色码转换成rgb颜色值
205,205,205为例
205对16求余就是 16的 0次方值
205减去余数再除以16 就是 16的一次方的值
205%16等于13,取“0123456789ABCEDEF”.indexof(13) 为 D
205-13再除以16 等于12 取“0123456789ABCEDEF”.indexof(12) 为 C
所以第一组CD就求出来了,同理循环三次 最终可得CDCDCD。
感兴趣? 收藏一下!RGB颜色对照表