使用javascript实现一个在线RGB颜色转换器

 更新时间:2024年01月11日 08:56:23   作者:全栈小5  
目前已经有很多网页版在线小工具,之前很多窗体化的工具也逐渐网页化,比如:PS画图软件,也都能直接网页化进行设计,由于自己实际项目经常会用到颜色转换,所以直接自己开发个简单版的在线颜色转换小工具,需要的朋友可以参考下

背景

目前已经有很多网页版在线小工具,之前很多窗体化的工具也逐渐网页化,比如:PS画图软件,也都能直接网页化进行设计,
网页真的是无所不能了。由于自己实际项目经常会用到颜色转换,所以直接自己开发个简单版的在线颜色转换小工具。

RGB转HEX

效果

代码

<html>
<head>
    <meta charset="utf-8" />
    <title>颜色在线转换</title>
    <style type="text/css">
    </style>
</head>
<body>

    <!---->
    <div style="display: flex; margin-top: 100px;">
        <div style="display:flex;width:260px;">
            <div style="width:60px;height: 35px;line-height: 35px;text-align: center;background: #ccc;">
                <span>RGB</span>
            </div>
            <div style="width:200px;height: 33px;line-height: 33px;border: 1px solid #ccc;">
                <input id="txtRgb" placeholder="请输入RGB值 如:255,255,255" style="width:100%;padding: 7px 7px;outline: none;background: none;border: none;">
            </div>
        </div>

        <div style="height: 35px; line-height: 35px;padding:0 10px;">
            <span>转为</span>
        </div>

        <div style="display:flex;width:260px;">
            <div style="width:60px;height: 35px;line-height: 35px;text-align: center;background: #ccc;">
                <span>HEX</span>
            </div>
            <div style="width:200px;height: 33px;line-height: 33px;border: 1px solid #ccc;">
                <input id="txtHex" readonly="readonly" style="width:100%;padding: 7px 7px;outline: none;background: none;border: none;">
            </div>
        </div>
    </div>

</body>
</html>

<script type="text/javascript">

    var rgb = document.getElementById('txtRgb');
    var hex = document.getElementById('txtHex');
    rgb.onkeyup = function () {
        if (rgb.value && rgb.value.split(',').length == 3) {
            
            var hexValue = rgbToHex("rgb(" + rgb.value + ")");
            hex.value = hexValue;
        }
    }

    //
    function rgbToHex(rgb) {
        // 使用正则表达式提取出数字部分
        var rgbArray = rgb.match(/\d+/g);

        // 将 RGB 分量转换为十六进制,并补零
        var r = parseInt(rgbArray[0]).toString(16).padStart(2, '0');
        var g = parseInt(rgbArray[1]).toString(16).padStart(2, '0');
        var b = parseInt(rgbArray[2]).toString(16).padStart(2, '0');

        // 将结果拼接为 HEX 格式
        var hex = '#' + r + g + b;

        return hex;
    }

</script>

HEX转RGB

效果

代码

<html>
<head>
    <meta charset="utf-8" />
    <title>颜色在线转换</title>
    <style type="text/css">
    </style>
</head>
<body>

    <!---->
    <div style="display: flex; margin-top: 50px;">
        <div style="display: flex; width: 260px;">
            <div style="width:60px;height: 35px;line-height: 35px;text-align: center;background: #ccc;">
                <span>HEX</span>
            </div>
            <div style="width: 200px; height: 33px; line-height: 33px; border: 1px solid #ccc;">
                <input id="txtHex2" placeholder="请输入HEX值 如:#FFFFFF" style="width:100%;padding: 7px 7px;outline: none;background: none;border: none;">
            </div>
        </div>

        <div style="height: 35px; line-height: 35px;padding:0 10px;">
            <span>转为</span>
        </div>

        <div style="display: flex; width: 260px;">
            <div style="width:60px;height: 35px;line-height: 35px;text-align: center;background: #ccc;">
                <span>RGB</span>
            </div>
            <div style="width: 200px; height: 33px; line-height: 33px; border: 1px solid #ccc;">
                <input id="txtRgb2" readonly="readonly" style="width:100%;padding: 7px 7px;outline: none;background: none;border: none;">
            </div>
        </div>
    </div>

</body>
</html>

<script type="text/javascript">

    var hex2 = document.getElementById('txtHex2');
    var rgb2 = document.getElementById('txtRgb2');
    hex2.onkeyup = function () {
        if (hex2.value.length == 7) {

            var rgbValue = hexToRgb(hex2.value);
            rgb2.value = rgbValue;
        }
    }

    //
    function hexToRgb(hex) {
        // 去掉 # 号并分割成 r、g、b 三个部分
        var hexValue = hex.replace('#', '');
        var r = parseInt(hexValue.substring(0, 2), 16);
        var g = parseInt(hexValue.substring(2, 4), 16);
        var b = parseInt(hexValue.substring(4, 6), 16);

        // 返回 RGB 格式字符串
        var rgb = 'rgb(' + r + ', ' + g + ', ' + b + ')';

        return rgb;
    }

</script>

什么是RGB

RGB(红绿蓝)是一种让我们能够创造出各种色彩的加法色彩模式。

在 RGB 模式下,颜色是通过混合三种红、绿、蓝的颜色成分来实现的。

这三种颜色可以以不同的深浅程度混合在一起,从而形成数百万种不同的颜色。

在前端开发中,RGB 经常被用来指定网页或者应用程序中的颜色。

RGB原理

RGB(红绿蓝)颜色模型是一种加法颜色混合模式,通过调节三种颜色的亮度来实现。

每种颜色有一个亮度范围从 0 到 255,0 表示完全暗,255 表示最亮。通过调节红色、绿色和蓝色的值,可以创建出所有的其他颜色。

当三种原色的值都为最小值时(即为0),得到的是黑色。当三种原色的值都为最大值时(即为255),得到的是白色。

通过增加或减少其中一种或多种原色的值,可以得到任意其他颜色。

例如,红色可以通过将红色分量设置为最大值 255,而将绿色和蓝色分量设置为最小值 0 来创建。
类似地,绿色和蓝色都可以分别单独设置为最大值来得到纯绿和纯蓝颜色。

在 CSS 中,颜色值可以使用 RGB 表示,
例如 rgb(255, 0, 0) 表示纯红色。
第一个参数是红色分量值,
第二个参数是绿色分量值,
第三个参数是蓝色分量值。
通过调整这些分量的值,可以获得所需的颜色。

HEX16

十六进制:英文名称,Hexadecimal

十六进制颜色值(HEX16)是指由六个十六进制数字组成的颜色编码,用于表示 RGB 颜色空间中的颜色。

每个十六进制数字可以取 0 到 9 的数字以及 A 到 F 的字母,表示 16 种可能的值,因此称为十六进制值。

在 HTML 和 CSS 中,常用的表示十六进制颜色值的方法是在 “#” 符号后面附加六个十六进制字符。

例如,红色的十六进制颜色值是 #FF0000,其中前两个字符表示红色分量的值,后面的四个字符分别表示绿色和蓝色分量的值。

通过将每个分量的十六进制值转换为十进制(即从 16 进制到 10 进制的转换),可以得到每个分量的值,进而得到完整的 RGB 值。

HEX16 色全名是十六进制颜色值的完整名称。这些名称是根据对应的颜色值或者颜色特征而命名的。以下是一些常见的 HEX16 色全名示例:

  • #FF0000: 红色
  • #00FF00: 绿色
  • #0000FF: 蓝色
  • #FFFFFF: 白色
  • #000000: 黑色
  • #FFFF00: 黄色
  • #FF00FF: 品红色
  • #00FFFF: 青色
  • #808080: 灰色
  • #FFA500: 橙色

这只是一小部分例子,实际上可以使用数百种不同的 HEX16 色全名来描述各种颜色。每种颜色都有其特定的 HEX16 色全名,用于更准确地识别和描述颜色。

以上就是使用javascript开发在线RGB颜色转换器的详细内容,更多关于javascript在线RGB颜色转换的资料请关注脚本之家其它相关文章!

相关文章

  • Layui带搜索的下拉框的使用以及动态数据绑定方法

    Layui带搜索的下拉框的使用以及动态数据绑定方法

    今天小编就为大家分享一篇Layui带搜索的下拉框的使用以及动态数据绑定方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 使用JS实现一个Sleep函数的示例代码

    使用JS实现一个Sleep函数的示例代码

    这篇文章主要介绍了使用JS实现一个Sleep函数,实现 sleep 函数其实非常简单,主要是理解 JavaScript 中异步执行情况,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Javascript表单特效之十大常用原理性样例代码大总结

    Javascript表单特效之十大常用原理性样例代码大总结

    开头说这个常用原理性样例,大家可能不太清楚,这篇文章主要是针对实际开发中常用的一些代码分析,主要是针对表单处理方法的一些资料,推荐大家收藏
    2016-07-07
  • js正则表达式校验指定字符串的方法

    js正则表达式校验指定字符串的方法

    今天小编就为大家分享一篇js正则表达式校验指定字符串的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置

    JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置

    这篇文章主要介绍了JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • js实现弹出框的拖拽效果实例代码详解

    js实现弹出框的拖拽效果实例代码详解

    本文通过实例代码给大家介绍了js实现弹出框的拖拽效果,代码简单易懂,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • 几个有趣的Javascript Hack

    几个有趣的Javascript Hack

    在网上看到几个有意思的Javascript代码,和大家分享一下。直接将代码拷贝到IE中即可,注意代码为一样。不可分行
    2010-07-07
  • JavaScript中net::ERR_CONNECTION_REFUSED解决方法大全

    JavaScript中net::ERR_CONNECTION_REFUSED解决方法大全

    在一次测试中遇到了报net::ERR_CONNECTION_REFUSED的错误,五哦一下面这篇文章主要给大家介绍了关于JavaScript中net::ERR_CONNECTION_REFUSED解决方法的相关资料,需要的朋友可以参考下
    2022-10-10
  • for of 和 for in 的区别介绍

    for of 和 for in 的区别介绍

    这篇文章主要介绍了for of 和 for in 的区别,for of 和 for in都是用来遍历的属性,本文重点介绍下for of 和 for in 的区别,需要的朋友可以参考下
    2022-12-12
  • JavaScript常用函数工具集:lao-utils

    JavaScript常用函数工具集:lao-utils

    现在Javascript库海量,流行的也多,比如jQuery,YUI等,虽然功能强大,但也是不万能的,功能不可能涉及方方面面,这里给大家分享一个的JS库是对这些的补充,很多也比较实用,把应用到项目中中去也比较方面,这也是对工作的一些积累,也加深对知识的理解。
    2016-03-03

最新评论