RGB颜色值与十六进制颜色码转换

七亿少女的劫丨

<!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颜色对照表

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值