当前位置: 首页 > news >正文

CSS中使用 HSL(Hue, Saturation, Lightness) 动态生成色值

前言

HSL(Hue, Saturation, Lightness)是一种直观的颜色表示方法,比传统的RGB模式更符合人类对颜色的感知方式。下面我将详细介绍HSL颜色模式,并提供实际应用案例。

1、HSL颜色模式详解

1.1、 HSL的三个分量

1.1.1、色相(Hue):表示颜色的基本属性,取值范围0-360度

:红色
120°:绿色
240°:蓝色
360°:回到红色

1.1.2、饱和度(Saturation):表示颜色的纯度,取值范围0%-100%

0%:完全灰色(无色彩)
100%:完全饱和(颜色最鲜艳)

1.1.3、亮度(Lightness):表示颜色的明暗程度,取值范围0%-100%

0%:黑色
50%:纯色
100%:白色

2. HSL与RGB的比较

在这里插入图片描述

3、案例

由 红色 到绿色 分为100份,根据数据的大小进行色值改变
例如:
红色为:hsla(355, 65%, 46%, 1)
绿色为:hsla(148, 100%, 38%, 1)

<template #stationNum-slot="{row}"><div class="my-cell-span" :style="{backgroundColor: `hsl(${(120 - row.stationNum * 1.2)}, ${(100 - (100 - 65) / 99) * row.stationNum}%, ${46 - ((46 - 38 ) / 99 ) * row.stationNum}%)`}">{{ row.stationNum }}</div>
</template>// 色相(Hue):(120 - row.stationNum * 1.2),因为红色 0°:红色,120°:绿色; 或者 ${148 + ((355 - 148) / 99) * row.stationNum }
// 饱和度(Saturation): ${(100 - (100 - 65) / 99) * row.stationNum}%, 根据基础色的饱和度进行等份换算
// 亮度(Lightness): ${46 - ((46 - 38 ) / 99 ) * row.stationNum}%
...const handleReload = () => {
let data = []
for(let i=1;i<101;i++){data.push({regionName: i,stationNum: Math.round((Math.random() * 100) + 1) })
}
tabledata.value = data.sort((a, b) => b.stationNum - a.stationNum)
}

效果图片:这种色值过渡效果明显要比使用RGBA 展示的效果让人看着更舒服
在这里插入图片描述

4、HSL的优势和使用场景

4.1、优势

直观性:HSL比RGB更符合人类对颜色的感知方式
易于调整:只需调整一个分量即可改变颜色特性
创建和谐配色:通过固定色相,调整饱和度和亮度可以轻松创建和谐的颜色方案

4.2、使用场景

主题颜色系统:使用HSL可以轻松创建主色、辅助色和强调色
颜色渐变:通过调整色相创建平滑的颜色过渡
响应式颜色:根据主题或状态调整颜色亮度和饱和度
可访问性:通过调整亮度对比度确保内容可读性

总结

HSL颜色模式提供了一种直观的方式来处理颜色,特别适合需要动态生成颜色或创建和谐配色方案的场景。通过固定色相并调整饱和度和亮度,可以轻松创建出一系列协调的颜色,非常适合设计系统和主题开发。

http://www.xdnf.cn/news/1447633.html

相关文章:

  • Linux 对目录授予用户读写权限的方法
  • 信创MySQL到达梦数据库的SQL语法转换技术解析
  • AWK命令完全指南:从理论到实战的文本处理利器
  • Spring Boot + Nacos 配置中心示例工程
  • tcpdump用法
  • Best Video网页官网入口 – 免费在线网页视频解析下载器
  • 认识HTML
  • 用资产驱动方法构建汽车网络安全档案
  • VPS云服务器安全加固指南:从入门到精通的全面防护策略
  • TypeScript 内置工具类型大全(ReturnType、Omit、Pick 等)
  • 【Unity项目经验分享】实现左右分屏裸眼3D程序
  • 数据结构之加餐篇 -顺序表和链表加餐
  • 从 0 到 1 实现 PyTorch 食物图像分类:核心知识点与完整实
  • 基础看门狗--idf开发esp32s3
  • PNP具身解读——RSS2025论文加州伯克利RLDG: 通过强化学习实现机器人通才策略提炼。
  • 基于物联网的智慧用电云平台构建与火灾防控应用研究
  • 复杂网络环境不用愁,声网IoT多通道传输实战经验丰富
  • Coze使用教程-插件
  • 袋鼠云产品功能更新报告14期|实时开发,效率再升级!
  • Kafka面试精讲 Day 6:Kafka日志存储结构与索引机制
  • 浏览器插件开发--通过调用本地nmap实现nmap插件扫描
  • python如何解决html格式不规范问题
  • Android使用内存压力测试工具 StressAppTest
  • [嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_用Qt编译linux-Opencv库 测试
  • 显存与内存
  • 【甲烷数据】MethaneSAT 卫星遥感数据
  • 使用DCGAN实现动漫图像生成
  • 树莓集团产教融合:数字学院践行职业教育“实体化运营”要求
  • Ubuntu 系统 LVM 逻辑卷扩容教程
  • 中小企业 AI 转型难?成本、技术、人才三重困境下,轻量化解决方案来了