JS:颜色的格式转换(rgb、十六进制)

2023-11-07

简介

偶尔需要转换颜色格式,然后使用。如rgb和十六进制之间的互相转换

具体实现

使用:
import { TzColorExchangeStyle } from colorExchange.js
console.log(TzColorExchangeStyle.formatColorFun('#ffffff'))
// colorExchange.js
class TzColorExchangeStyle {
  static get reg() {
    return /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
  }

  static get regTwo() {
    return /^0x([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
  }

  // rgb转换为 #?????? 的16进制,或补全#fff为#ffffff
  static rgbToHexadecimalNormal(value) {
    // 如果是rgb颜色表示
    if (/^(rgb|RGB)/.test(value)) {
      let aColor = value.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',')
      let strHex = '#'
      for (let i = 0; i < aColor.length; i++) {
        let hex = Number(aColor[i]).toString(16)
        if (hex === '0') {
          hex += hex
        }
        strHex += hex
      }
      if (strHex.length !== 7) {
        strHex = value
      }
      return strHex
    } else if (this.reg.test(value)) {
      let aNum = value.replace(/#/, '').split('')
      if (aNum.length === 6) {
        return value
      } else if (aNum.length === 3) {
        let numHex = '#'
        for (let i = 0; i < aNum.length; i += 1) {
          numHex += aNum[i] + aNum[i]
        }
        return numHex
      }
    }
    return value
  }

  // rgb转换为 0x?????? 的16进制
  static rgbToHexadecimalOther(value) {
    let val = this.rgbToHexadecimalNormal(value)
    if (val.indexOf('#') > -1 && val.lastIndexOf('#') === val.indexOf('#')) {
      val = val.replace('#', '0x')
    }
    return val
  }

  // 两种16进制颜色之一转为RGB格式
  static hexadecimalToRgb(value) {
    let sColor = value.toLowerCase()
    if (sColor && this.reg.test(sColor)) {
      if (sColor.length === 4) {
        let sColorNew = '#'
        for (let i = 1; i < 4; i += 1) {
          sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))
        }
        sColor = sColorNew
      }
      // 处理1+6位的颜色值
      let sColorChange = []
      for (let i = 1; i < 7; i += 2) {
        sColorChange.push(parseInt('0x' + sColor.slice(i, i + 2)))
      }
      return 'rgb(' + sColorChange.join(',') + ')'
    } else if (sColor && this.regTwo.test(sColor)) {
      if (sColor.length === 4) {
        let sColorNew = '0x'
        for (let i = 1; i < 4; i += 1) {
          sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))
        }
        sColor = sColorNew
      }
      // 处理2+6位的颜色值
      let sColorChange = []
      for (let i = 2; i < 8; i += 2) {
        sColorChange.push(parseInt('0x' + sColor.slice(i, i + 2)))
      }
      return 'rgb(' + sColorChange.join(',') + ')'
    }
    return sColor
  }

  static formatColorFun(value) {
    let obj = {
      hexadecimalNormal: '',
      hexadecimalOther: '',
      rgb: this.hexadecimalToRgb(value)
    }
    obj.hexadecimalNormal = this.rgbToHexadecimalNormal(obj.rgb)
    obj.hexadecimalOther = this.rgbToHexadecimalOther(obj.rgb)
    return obj
  }
}

export {
  TzColorExchangeStyle 
}

最后

觉得有用的朋友请用你的金手指点一下赞,或者评论留言一起探讨技术!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS:颜色的格式转换(rgb、十六进制) 的相关文章

  • 求最大公约数和最小公倍数的方法

    一 求最大公约数 1 辗转相除法 最推荐 不用管a b谁大谁小 如果b大 经过一次循环 a b会交换位置 include
  • html和js的学习

    链接如下 html https www runoob com html html attributes html js https www runoob com js js tutorial html
  • Gradle系列

    gradle idea使用 Gradle的使用教程 https blog csdn net qq 22172133 article details 81513955 原文网址 https www jianshu com p 46e7a916

随机推荐

  • Android强大的原生调试工具adb的常用命令

    文章目录 ADB简介 常用命令 列出链接的设备 进入设备的shell环境 设备日志 安装应用程序 卸载应用程序 将本地文件复制到调试设备上 将设备上的文件拉取到本地 启动程序 强制停止程序运行 截图 屏幕录制 列出调试设备所有的应用的报名
  • 说说数据一致性有哪几种?

    分析 回答 一般来说 数据一致性模型可以分为强一致性和弱一致性 强一致性也叫做线性一致性 除此以外 所有其他的一致性都是弱一致性的特殊情况 弱一致性根据不同的业务场景 又可以分解为更细分的模型 不同一致性模型又有不同的应用场景 强一致性 当
  • ETest_Tester-装备外场试验综合测试仪

    1 产品简介 装备外场试验综合测试仪ETest Tester是用于各行业装备软件研发 测试部门或者质量管理部门外场装备测试的综合测试设备 该设备由硬件和软件两部分组成 硬件采用全封闭 无风扇铝合金结构 嵌入式X86架构主板 软件部分包括操作
  • 苦逼的是怎么又有东西没记住,但我们依然每天坚持一遍、一遍又一遍指导记住为止。

    期待的是可以检验自己学习的成功 苦逼的是怎么又有东西没记住 但我们依然每天坚持一遍 一遍又一遍指导记住为止 原本以为大家会把讲过的都记录下来 以便日后毕业复习 事实证明18岁的我还是太年轻 一切想象的太美好 三番五次督促整理到自己笔记上 可
  • python基础—图形开发

    python基础 图形开发 python图形界面开发 认识tkinter模块 窗体的基本设置方法 几何布局管理器 pack布局管理器 grid布局管理器 place布局管理器 使用tkinter设计计算器程序 Python事件处理 常用tk
  • C++11实现的数据库连接池

    它什么是 数据库连接池负责分配 管理和释放数据库连接 它允许应用程序重复使用一个现有的数据库连接 而不是再重新建立一个 类似的还有线程池 为什么要用 一个数据库连接对象均对应一个物理数据库连接 每次操作都打开一个物理连接 使用完都关闭连接
  • markdown使用文档(Typora 快捷键)

    markdown 更简洁 更高效 强烈建议开发者认真阅读本文档 掌握md及HBuilderX对md的强大支持 窄屏幕下 可按Alt 滚轮横向滚动 很多人只把markdown用于网络文章发表 这糟蹋了markdown markdown不止是H
  • 对numpy.c_的理解

    文章目录 文档描述 关于python科学计算 pandas numpy 中axis 轴 的理解 理解 文档描述 来自官方文档的叙述 这里只简单翻译一部分 numpy c numpy c
  • Python 7.OpenCV 获取执行时间 抠图添加到另一个图、按位运算

    与运算 对掩膜的白色区域保留 黑色区域去除 非运算 取反运算 黑变白 白变黑 import cv2 import numpy as np from matplotlib import pyplot as plt img1 cv2 imrea
  • 1.4 新倚天屠龙之Java传--夜谈Java的运行

    黑夜迅速从地球另一端弥漫而来 重新又笼罩起了这块孤独的荒岛 但是冰火岛中这一束火光打破了这无边的寂寥 带了了一丝丝温馨 张翠山夫妇和谢逊 还有这便宜儿子Neo吃起了简陋的篝火晚餐 虽然只有烤鱼跟野菜汤 但是因为殷素素的精心准备还是比较可口的
  • Apache log4j2远程代码执行漏洞复现

    Apache Log4j2远程代码执行漏洞 声明 漏洞描述 漏洞影响范围 漏洞复现 验证工具 JNDI注入 JNDI注入原理 jndi注入的利用条件 复现过程 深度利用 反弹shell 防御措施 缓解措施 声明 首先声明一下 图片上有Fre
  • input框输入实时检测校验

    1 只能输入英文 数字且必须以英文开头
  • 黑马程序员并发笔记-juc并发以及锁原理-总集篇-结合自己的思考和心得完整版

    黑马程序员并发编程笔记 一 进程的概念 黑马程序员并发编程笔记 二 java线程基本操作和理解 java并发编程笔记 三 管程 一 java并发编程笔记 三 管程 二 java并发编程笔记 三 管程 三 java并发编程笔记 三 管程 四
  • 同步和异步的区别

    同步 同指一个进程在执行某个请求的时候 若该请求需要一段时间才能返回信息 那么这个进程将会一直等待下去 直到收到返回信息才继续执行下去 异步 是指进程不需要一直等下去 而是继续执行下面的操作 不管其他进程的状态 当有消息返回时系统会通知进程
  • 关于socket的各种错误码

    1 INVALID SOCKET 表示该 socket fd 无效 如 accept 2 或 socket 2 等在创建socketfd时 int m socket socket AF INET SOCK STREAM 0 if m soc
  • Python操作MySQL数据库

    1 查询操作 注意 Python查询Mysql使用 fetchone 方法获取单条数据 使用fetchall 方法获取多条数据 fetchone 该方法获取下一个查询结果集 结果集是一个对象 fetchall 接收全部的返回结果行 rowc
  • SpringBoot日志

    application properties logging level com atguigu trace spring profiles active dev logging path 不指定路径在当前项目下生成springboot l
  • 启用springboot security后登录web页面需要用户名和密码之默认的用户名和密码

    问题 注意 本人使用的Spring Boot 2 0 2 对1 5 x系列未必有用 官方文档在这里 直接解决办法 0 移除spring boot starter security依赖 如果没有实际使用security的功能 可以直接移除sp
  • RHEL 7.3 根密码重置

    环境 win10 RedHat Enterprise Linux 7 2 目的 重置Root 用户密码 操作 1 界面选择首项 e 进入编辑界面 2 linuxefi vmlinuz 3 10 0 327 末尾UTF 8 后添加 rd br
  • JS:颜色的格式转换(rgb、十六进制)

    简介 偶尔需要转换颜色格式 然后使用 如rgb和十六进制之间的互相转换 具体实现 使用 import TzColorExchangeStyle from colorExchange js console log TzColorExchang