如何获取 #xxxxxx 颜色的色调?

在前端开发中,我们常常需要获取颜色的不同属性值,包括红、绿、蓝三原色以及色调、饱和度、亮度等。那么,如何获取一个 Hex 格式的颜色值(例如 #FFA500)的色调呢?本文将为你介绍其中的实现方法。

了解 HSL 和 HSV

在深入讨论如何获取色调之前,我们需要先了解两个与颜色相关的概念:HSL 和 HSV。它们都是一种将颜色表示成三个参数的方式,包括:

  • 色调(Hue):用角度值表示,在圆形色谱上表示颜色。
  • 饱和度(Saturation):表示颜色的强度或纯度,取值范围为 0%-100%。
  • 亮度(Lightness)或明度(Value):表示颜色的明暗程度,取值范围为 0%-100%。

HSL 表示法将颜色表示为三个参数:H, S, L。而 HSV 表示法将颜色表示为三个参数:H, S, V。HSL 更适合描述人眼所感知到的颜色,而 HSV 则更适合进行颜色选择、拾取等交互操作。

从 Hex 色值计算色调

Hex 色值是一种十六进制的颜色表示方法,它由三组两位数的数字表示红、绿、蓝三原色的取值。例如 #FFA500 表示红色的取值为 255,绿色的取值为 165,蓝色的取值为 0。

要获取 Hex 色值的色调,我们需要先将其转换为 HSL 或 HSV 表示法,然后从中获取色调的取值。这里我们以 HSL 为例来实现这个过程。

将 Hex 色值转换为 RGB,再转换为 HSL

首先,我们需要将 Hex 色值转换为 RGB 值。具体的转换方法如下:

-------- ------------- -
  ----- - - --------------------- --- ----
  ----- - - --------------------- --- ----
  ----- - - ---------------------- ----

  ------ - -- -- - --
-

接下来,我们将 RGB 值转换为 HSL 值。具体的转换方法可以参考 Wikipedia 上的公式,实现如下:

-------- ------------- -
  ----- - - ----- - ----
  ----- - - ----- - ----
  ----- - - ----- - ----
  ----- --- - ----------- -- ---
  ----- --- - ----------- -- ---
  --- -- -- --

  -- ---- --- ---- -
    - - --
  - ---- -- ---- --- - -- - -- -- -
    - - -- - --- - -- - ---- - ------
  - ---- -- ---- --- - -- - - -- -
    - - -- - --- - -- - ---- - ----- - ----
  - ---- -- ---- --- -- -
    - - -- - --- - -- - ---- - ----- - ----
  - ---- -- ---- --- -- -
    - - -- - --- - -- - ---- - ----- - ----
  -

  - - ---- - ---- - --

  -- ---- --- ---- -
    - - --
  - ---- -- -- -- ---- -
    - - ---- - ---- - ---- - -----
  - ---- -
    - - ---- - ---- - -- - --- - -----
  -

  ------ - -- --------------

----------------------------------------------------------- ----------
---------------------------------------------------------------------------------------
  

猜你喜欢

  • obj.length === +obj.length in JavaScript

    在 JavaScript 中,我们经常使用 length 属性来获取数组或字符串的长度。但是你知道吗?在比较 obj.length 和 +obj.length 时,两者的结果可能不同。

    6 年前
  • 使用 Select2 限制标签的数量

    在前端开发中,我们经常会使用 Select2 来实现下拉选择框和带有搜索功能的多选框。但是,在某些情况下,我们可能需要限制用户选择的标签数量,以便更好地控制数据的输入和输出。

    6 年前
  • 使用gulp.js编译HTML部分文件

    在前端开发中,我们经常需要将多个HTML文件合并成一个完整的页面,而这些HTML文件往往是分散在不同目录下的部分文件。使用gulp.js可以方便地完成这个任务。 安装gulp.js 如果您尚未安装gu...

    6 年前
  • JavaScript 中有类似于 string.isnullorempty() 的函数吗?

    在 C# 中,我们可以使用 string.IsNullOrEmpty() 函数来检查一个字符串是否为 null 或者空。但是在 JavaScript 中却没有这样的内置函数。

    6 年前
  • Dot dotdot dotdotdot 作为 JS 中的加载动画?

    在前端开发中,我们经常需要等待某个异步操作完成后再进行下一步操作,比如数据获取、图片加载等等。为了提升用户体验,我们通常会在页面上添加一个加载动画,告诉用户程序正在努力工作中。

    6 年前
  • JavaScript 中百分号 (%) 的作用是什么?

    在 JavaScript 中,百分号(%)有两种不同的使用方式:模运算和字符串格式化。 模运算 模运算是指两个数相除后取余数的操作。例如: - - - -- -- -这里,5 除以 2 得到商为 2,...

    6 年前
  • 在本地文件系统上运行 Greasemonkey 脚本

    Greasemonkey 是一款著名的浏览器插件,它可以在网页上注入 JavaScript 代码,并改变页面的行为。但是,在某些情况下,我们可能需要在本地文件系统上运行 Greasemonkey 脚本...

    6 年前
  • script标签中不使用href="#"的原因与解决方案

    在前端开发中,我们通常会使用script标签来引入JavaScript文件。在HTML5中,可以使用以下方式: ------- ---------------------------------然而,...

    6 年前
  • lodash debounce not working in anonymous function

    Kristian Barrett提出了一个问题:lodash debounce not working in anonymous function,或许与您遇到的问题类似。

    6 年前
  • 如何在 jQuery UI 日历/日期选择器中使用“周”而不是“日”模式

    jQuery UI 是一个广泛使用的前端 JavaScript 库。它提供了一系列强大而易于使用的用户界面组件,其中包括日历/日期选择器。默认情况下,该组件以“日”模式显示日期,但有时需要以“周”模式...

    6 年前
  • 使用JavaScript如何填写表单字段并提交?

    在前端开发中,表单是非常常见的元素。在某些情况下,我们可能需要通过JavaScript来填写表单字段并提交表单数据。本文将介绍如何使用JavaScript来实现这个过程。

    6 年前
  • 如何检测Facebook JavaScript SDK是否成功加载?

    Facebook JavaScript SDK是开发人员在网站中集成Facebook平台功能的常见方法。但是,有时候我们需要知道Facebook JavaScript SDK是否已经成功加载,以便在后...

    6 年前
  • 将 JavaScript 数字转换为中文大写数字

    在前端编程中,有时需要将阿拉伯数字转换成中文大写数字来进行展示。本文将介绍如何使用 JavaScript 实现这个功能。 解决方案 我们可以通过将数字转换成字符串,然后处理字符串的方式来实现将数字转换...

    6 年前
  • 阻止父元素事件处理程序的执行

    在前端开发中,我们经常需要处理各种事件,例如鼠标点击、滚动等。但有时候,我们可能需要防止父元素事件处理程序的执行,以避免意外的行为发生。本文将介绍如何使用JavaScript和jQuery来实现阻止父...

    6 年前
  • 如何获取 jQuery $(this) 的 ID?

    在前端开发中,我们常常需要通过 jQuery 操作 DOM。而在使用 jQuery 时,$(this) 是一个非常常用的选择器。但是,有时我们也需要获取 $(this) 元素的 ID 值,来进行相应的...

    6 年前
  • 如何在 HTML5 中实现无需 Flash 的剪贴板复制?

    在Web开发中,经常需要在网页上实现一些剪贴板复制的功能,例如将某个文本或图片复制到用户的剪贴板中,方便用户进行下一步操作。在早期的 Web 开发中,常常使用 Adobe Flash 来实现这一功能,...

    6 年前
  • 如何将继承的对象转换为 JSON 字符串?

    在前端开发中,我们经常需要处理 JavaScript 对象与 JSON 字符串之间的转换。但是当我们要将继承自其他对象的对象转换为 JSON 字符串时,可能会遇到一些问题。

    6 年前
  • jQuery事件监听:当选择选项时触发

    在前端开发中,我们经常需要监听用户的交互行为以响应相应事件。其中,监听下拉列表的选择操作是一个常见需求。本文将介绍如何使用 jQuery 监听下拉列表的选择事件,并给出详细的示例代码和解释。

    6 年前
  • 在 iframe 中关闭 Bootstrap 模态框

    Bootstrap 是一种流行的前端框架,提供了许多插件和组件,包括模态框(Modal)。在某些情况下,我们可能需要在 iframe 中使用 Bootstrap 模态框,但是默认情况下无法从 ifra...

    6 年前
  • 如何在 HTML 表格中翻转(转置)行和列?

    HTML表格通常以行为主,但有时您可能需要将其翻转,以便以列为主。这篇文章将介绍如何使用JavaScript和jQuery来实现这一目标。 简单的HTML表格 首先,我们来创建一个简单的HTML表格,...

    6 年前

相关推荐

    暂无文章